linux 用 SUNTAC U-Cable P ドライバ
文書作成日:2002.03.13
最終更新日:2003.01.14
概要
本ソフトウェアは、サン電子製 USB-PHS/PDC 接続ケーブル U-Cable P を linux で使用
するためのドライバソフトです。
メーカーサイトはこちら -> http://www.sun-denshi.co.jp/scc/scc-j.htm
動作確認機種
以下の環境で動作が確認されております。多分、他の U-Cable シリーズでも使えるでしょう。
model | vendor | product | 動作確認環境 | 動作確認者 |
U-Cable type P2 |
0x05db |
0x0005 |
Vine Linux 2.1.5 (2.2.19-0vl0.23) Kondara Linux 2.1 (2.4.18-12k) RedHat Linux 7.2 (2.4.7-10) Vine Linux 2.6 (2.4.20-0vl5) |
トラップ |
U-Cable type P1 U-Cable type P5 |
0x05db |
0x0005 |
Kondara Linux 2.1 (2.4.19-pre4) |
まめどれ氏 |
U-Cable type D2 |
0x05db |
0x0003 |
Slackware8.0 (2.4.18, 2.4.19pre7) |
馬場氏 |
U-Cable type P3 |
0x05db |
0x0005 |
Vine Linux 2.5 (2.4.19) |
ゆき氏 |
for Type A2, Type P4
SUNTAC U-Cable A2, U-Cable P4 の場合は、interval を 4 にすると動くそうです。
- port->interrupt_in_urb->interval = 1;
+ port->interrupt_in_urb->interval = 4;
この行自体をコメントアウトしてしまっても良いかも。
- port->interrupt_in_urb->interval = 1;
+ /* port->interrupt_in_urb->interval = 1; */
kernel2.2でご利用の方へ
kernel 2.2系では usb-serial.c の古い版 を使用しているため
本ドライバの v1.3.0以前のものを用い、下記の修正を行ってお使いください。
- suntac_ucablep.c 先頭の #define SUNTAC_UCP_24 を comment out する。
#define SUNTAC_UCP_24
↓
//#define SUNTAC_UCP_24
- usbmgrなどへの設定追加(/etc/usbmgr/usbmgr.conf) を行う。
# SUNTAC U-Cable P
vendor 0x5db product 0x5 module suntac_ucablep
# SUNTAC U-Cable D
vendor 0x5db product 0x3 module suntac_ucablep
ドライバモジュール作成方法
2つの方法があります。1つは、kernel tree に加えてしまう方法。
もう1つは、単独でモジュールを作成する方法です。
kernel tree に加える方法
以下のようにパッチを当て、ファイルをコピーしてください
(カーネルソースが /usr/src/linux-`uname -r` 以下にあるものとして記述していますが、
お使いの環境に合わせて適宜調整してください)。
kernel2.4系の場合
# cd /usr/src/linux-`uname -r`
# patch -p1 < patch-suntacucp_2.4
# cp suntac_ucablep.c drivers/usb/serial/
# cp suntac_ucablep.h drivers/usb/serial/
... kernel make ...
kernel2.2系の場合
# cd /usr/src/linux-`uname -r`
# patch -p1 < patch-suntacucp_2.2
# cp suntac_ucablep.c drivers/usb/serial/
# cp suntac_ucablep.h drivers/usb/serial/
... kernel make ...
※なお、パッチがうまく当たらない場合は手作業で次の内容を加えていただければ結構です(改行せずに)。
- [/usr/src/linux/drivers/usb/serial/Config.in]
- dep_tristate ' USB SUNTAC U-Cable P (EXPERIMENTAL)' CONFIG_USB_SERIAL_SUNTAC_UCABLEP $CONFIG_USB_SERIAL $CONFIG_EXPERIMENTAL
- [/usr/src/linux/drivers/usb/serial/Makefile]
- obj-$(CONFIG_USB_SERIAL_SUNTAC_UCABLEP) += suntac_ucablep.o
単体でコンパイルする方法
付属のスクリプト trans をご利用ください。
なお、gcc-3 系列ではコンパイルオプションが随分変わったため、
コンパイル時にあれこれ警告メッセージが出ます。
そのままでもいけるそうですが、
適当に変えていただければよろしいでしょう。
kernel2.4系の場合
$ ./trans
$ su
# cp suntac_ucablep.o /lib/modules/`uname -r`/kernel/drivers/usb/serial/
# /sbin/depmod -a
# exit
kernel2.2系の場合
$ ./trans
$ su
# cp suntac_ucablep.o /lib/modules/`uname -r`/usb/
# /sbin/depmod -a
# exit
どちらの場合であっても、kernel はUSBが利用可能な状態でなくてはなりません(モジュールも)。
USB Serial Converter Support, USB Generic Serial Driver が有効である事をご確認ください。
使用方法
U-Cable P をPCに挿すと、kernel2.4系であれば suntac_ucablep モジュールが自動で
読み込まれます。kernel2.2系であれば、usbmgr などの設定によって読み込まれます。
lsmod で見て、モジュールが正常に読み込まれているか確認してください。
# /sbin/lsmod
Module Size Used by
suntac_ucablep 10980 0
usbserial 18048 0 [suntac_ucablep]
usb-ohci 18608 0 (unused)
usbcore 51808 1 [suntac_ucablep usbserial usb-ohci]
dmesg で確認すると、通常は
/dev/ttyUSB0 にこのデバイスが割り当てられるはずです
ので、PPPダイアラーなどへは、/dev/ttyUSB0 を指定して、普通のモデムと同じように使用してください。
# dmesg
usbserial.c: USB Serial support registered for SUNTAC U-Cable P
usbserial.c: SUNTAC U-Cable P converter detected
usbserial.c: SUNTAC U-Cable P converter now attached to
ttyUSB0 (or usb/tts/0 for devfs)
suntac_ucablep.c: SUNTAC U-Cable P driver v1.4.0
モデムデバイスとしてこれだけを使うのなら、以下のようにシンボリックリンクをはっても良いでしょう。
$ ln -s /dev/ttyUSB0 /dev/modem
動作確認方法
USB接続のシリアルデバイスとして見えますので、シリアルターミナル等で ATコマンド
を送って確認してください。ATI などの戻りは U-Cable P のマニュアルをご参照ください。
過去の不具合
ターミナルソフトでATコマンドを打つ際、atと入力したのに ta のように表示される
ことがありました。1文字目の a を入力してもすぐに表示されず、2文字目の t を
入力してようやく表示されるといった現象です。この状態になると当然ながら dial
等で失敗します。
115200bpsを指定しているにも関わらず、他の速度で接続されるケースがあり、
満足に通信できないケースがありました。
ppp0 などに接続できず終ってしまうこともありました。
[2002.03.24 追記] まめどれ氏より
APMでサスペンド・レジュームするとシステムフリーズする。
回避策は、apmd の apmcontinue スクリプトで、
レジューム後に suntac_ucablep モジュールを
rmmod,
insmod すれば良いとのこと。
suntac_ucp_read_int_callback() の usb_submit_urb() がエラーで返ることが多々あるとのこと。
[2002.04.04 追記] トラップ
v1.1.1 で発生していた不具合の原因は、
ノートPCの動作が遅いため WRITE URB を実行後、
コールバックが戻る前に次の WRITE が実行されていたためでした。
デスクトップPCではこのケースに当てはまらなかったようですが、
v1.2.0 では、どの場合でも正常に動作するように改善しています。
更新履歴
- 2003.01.14 v1.4.0 release
- 関根氏より kernel2.4.20以降でコンパイルできないとの連絡を受け、新しい usbserial.c への対応を行いました。
従来のソースからの変更個所が多いため、kernel2.4.19 以降は v1.4.0を、それ以前は v1.3.0 or v1.2.0 をご利用ください。
- 2002.07.07 v1.3.0 release
- 馬場氏より type D2 での動作報告を受け、type P, type D 両対応に修正しました(但し kernel2.4以降)。
- 2002.04.04 v1.2.0 release
- まめどれ氏より報告頂いていた件、および既知の問題点のほとんどを潰しました。
- 2002.03.29 v1.1.1 release
- まめどれ氏より頂いたpatchを適用し、
int_callback() で usb_submit_urb() にエラーが発生しても通信がおかしくならないように修正。
- 2002.03.12 v1.1.0 release
- kernel2.4系のusbserial.cが以前のものと異なっていたため、対応を施し公開。
- 2002.01.08 v1.0.0 release
- 未公開。kernel2.2系 (Vien linux 2.1.5)用として開発。
著作権について
本ソース(suntac_ucablep.c, suntac_ucablep.h) は、ベースとなった usbserial.c と同様に、
GPL2 に従って公開されていますので、ご自由にお使いください。
なお、本ソフトはまだ不完全であり、こちらでは安定して動作していても
他の環境ではどうかわかりません。
不具合があれば修正して使いましょう :-)
補足
従来、USB接続のデータケーブル/モデムはベンダー独自制御のものが多く、
専用ドライバを作らなくては linux で満足に利用できないものばかりでした。
本ドライバもこうした背景のもとに作成されたものです。
しかし、近年では標準化が進んだおかげで、CDC,ACM 対応のUSBデバイスなら linux でも
挿すだけで使えるようになってきています。
例えば SUNTAC U-Cable type A3 であれば /dev/usb/ttyACM0 のようなデバイス名で USBモデム として使えるとのことです。
ですので、これからUSBデータケーブルを購入される方は、
CDC,ACM対応で OSに依存せずに使える製品を選ぶのが良いでしょう。
#以上より、本ドライバの更新も v1.4.0 で終了の予定です。
download
kernel 2.4.19 以降用
suntacucp_1.4.0.tar.gz (12,423 byte)
MD5 (suntacucp_1.4.0.tar.gz) = 0b80e988283269725fa75a09fad2c6b7
kernel 2.4.18 以前用
suntacucp_1.3.0.tar.gz (12,755 byte)
MD5 (suntacucp_1.3.0.tar.gz) = 863dc21fcc04e3070b2d5dfa278f8fbb
kernel 2.4.18 以前用
suntacucp_1.2.0.tar.gz (12,627 byte)
MD5 (suntacucp_1.2.0.tar.gz) = 2d5119bd9de4466d0738dad6531f7d20