私の Linux ボックス (uname -a Linux gate 3.2.0-0.bpo.2-amd64 #1 SMP Fri Jun 29 20:42:29 UTC 2012 x86_64 GNU/Linux) には USB モデム WeTelecom WM-D300 があります。 「zeroCD」オプションがあります。ZeroCD の USB ID は 22de:6803 で、モデム デバイスの USB ID は 22de:6801 です。そのための usb_modeswitch ルールを作成し、このルールがうまく機能することをテストしました。
Aug 11 23:03:14 gate kernel: [ 609.832373] usb 1-1: usbfs: process 6081 (usb_modeswitch) did not claim interface 0 before use
Aug 11 23:03:14 gate kernel: [ 609.949352] usb 1-1: USB disconnect, device number 2
Aug 11 23:03:15 gate kernel: [ 610.596344] usb 1-1: new high-speed USB device number 5 using ehci_hcd
Aug 11 23:03:15 gate kernel: [ 610.759964] usb 1-1: New USB device found, idVendor=22de, idProduct=6801
Aug 11 23:03:15 gate kernel: [ 610.759978] usb 1-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
Aug 11 23:03:15 gate kernel: [ 610.759987] usb 1-1: Product: Wetelecom Mobile Products
Aug 11 23:03:15 gate kernel: [ 610.759994] usb 1-1: Manufacturer: WeTelecom Incorporated
Aug 11 23:03:16 gate kernel: [ 611.820404] option 1-1:1.0: GSM modem (1-port) converter detected
Aug 11 23:03:16 gate kernel: [ 611.820760] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
Aug 11 23:03:16 gate kernel: [ 611.820876] option 1-1:1.1: GSM modem (1-port) converter detected
Aug 11 23:03:16 gate kernel: [ 611.821095] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB4
Aug 11 23:03:16 gate kernel: [ 611.821204] option 1-1:1.2: GSM modem (1-port) converter detected
Aug 11 23:03:16 gate kernel: [ 611.821418] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB5
そこで、このデバイスの自動ホットプラグを許可する小さな udev 構成を作成しました。
ACTION!="add|change", GOTO="modem_rules_end"
SUBSYSTEM!="usb", GOTO="modem_rules_end"
LABEL="modem_rules_begin"
# WeTelecom WM-D300
ATTRS{idVendor}=="22de", ATTRS{idProduct}=="6803", RUN+="usb_modeswitch '%b/%k'"
LABEL="modem_rules_end"
そして、それは機能していません。モデムを再接続すると、完全に使用できなくなります。usb-devices は、usbfs ドライバーがあり、usb_modeswitch はコマンドラインからでも切り替えることができないことを示しています。udev も切り替えに失敗しましたが、再起動後、次の物理的な再接続まで問題なく動作します。モデムを接続したときの udev ログは次のとおりです。
Aug 11 22:42:11 gate logger: usb_modeswitch: using overriding config file /etc/usb_modeswitch.d/22de:6803; make sure this is intended
Aug 11 22:42:11 gate logger: usb_modeswitch: please report any new or corrected settings; otherwise, check for outdated files
Aug 11 22:42:11 gate logger: usb_modeswitch: using overriding config file /etc/usb_modeswitch.d/22de:6803; make sure this is intended
Aug 11 22:42:11 gate logger: usb_modeswitch: please report any new or corrected settings; otherwise, check for outdated files
Aug 11 22:42:11 gate usb_modeswitch: switching device 22de:6803 on 001/006
Aug 11 22:42:11 gate usb_modeswitch: switching device 22de:6803 on 001/006
Aug 11 22:42:11 gate kernel: [ 1495.864235] usb 1-1: usbfs: process 8485 (usb_modeswitch) did not claim interface 0 before use
Aug 11 22:42:11 gate kernel: [ 1495.864309] usb 1-1: usbfs: process 8485 (usb_modeswitch) did not claim interface 0 before use
Aug 11 22:42:16 gate logger: usb_modeswitch: switched to 22de:6803 on 001/006
Aug 11 22:42:19 gate logger: usb_modeswitch: switched to 22de:6803 on 001/006
だから、私の質問は:なぜ、どのように?コマンドラインから動作する理由と、udev で動作させる方法を教えてください。助けてください。事前にサンクス!