Для моей Nokia N900 есть программа QtMobileHotSpot, которая умеет расшаривать по Wi-Fi либо через USB интернет от мобильного оператора. По Wi-Fi всё хорошо работает, вопросов нет. Но как с USB поступить? В Сети видел, что на убунтах он сразу как модем определяется, так что в принципе работать это должно, но у меня usb_modeswitch никак не хочет переключить режим.
Вот что происходит, когда я телефон соединяю кабелем:
dmesg:

[  241.559043] usb 2-3: new high-speed USB device number 4 using ehci_hcd
[  241.675426] scsi7 : usb-storage 2-3:1.0
[  242.676682] scsi 7:0:0:0: Direct-Access     Nokia    N900              031 PQ: 0 ANSI: 2
[  242.677043] sd 7:0:0:0: Attached scsi generic sg2 type 0
[  242.682399] sd 7:0:0:0: [sdb] Attached SCSI removable disk

lsusb:

Bus 002 Device 006: ID 0421:01c7 Nokia Mobile Phones N900 (Storage Mode)

А вот я выбираю в QtMobileHotSpot режим USB:
dmesg:

[  405.770069] usb 2-3: USB disconnect, device number 4
[  406.291059] usb 2-3: new high-speed USB device number 5 using ehci_hcd

lsusb:

Bus 002 Device 009: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget

Дальше пробую переключить:

# usb_modeswitch -v 0525 -p a4a2
Looking for default devices ...
   found matching product ID
   adding device
 Found device in default mode, class or configuration (1)
Accessing device 009 on bus 002 ...
Getting the current device configuration ...
 OK, got current device configuration (1)
Using interface number 0
Error: message endpoint not given or found. Aborting.

Логов usb_modeswitch не создаёт (соответствующую переменную в конфиге включил).
Режим --verbose говорит следующее:

+ открыть спойлер

# usb_modeswitch -v 0525 -p a4a2 -W
Taking all parameters from the command line


* usb_modeswitch: handle USB devices with multiple modes
* Version 1.2.5 (C) Josua Dietze 2012
* Based on libusb0 (0.1.12 and above)

! PLEASE REPORT NEW CONFIGURATIONS !

DefaultVendor=  0x0525
DefaultProduct= 0xa4a2
TargetVendor=   not set
TargetProduct=  not set
TargetClass=    not set
TargetProductList=""

DetachStorageOnly=0
HuaweiMode=0
SierraMode=0
SonyMode=0
QisdaMode=0
GCTMode=0
KobilMode=0
SequansMode=0
MobileActionMode=0
CiscoMode=0
MessageEndpoint=  not set
MessageContent=""
NeedResponse=0
ResponseEndpoint= not set

InquireDevice enabled (default)
Success check disabled
System integration mode disabled


usb_set_debug: Setting debugging level to 15 (on)
usb_os_find_busses: Found 008
usb_os_find_busses: Found 007
usb_os_find_busses: Found 006
usb_os_find_busses: Found 005
usb_os_find_busses: Found 004
usb_os_find_busses: Found 003
usb_os_find_busses: Found 002
usb_os_find_busses: Found 001
usb_os_find_devices: Found 001 on 008
usb_os_find_devices: Found 001 on 007
usb_os_find_devices: Found 004 on 006
skipped 1 class/vendor specific interface descriptors
usb_os_find_devices: Found 001 on 006
error obtaining child information: Inappropriate ioctl for device
usb_os_find_devices: Found 001 on 005
usb_os_find_devices: Found 001 on 004
usb_os_find_devices: Found 001 on 003
usb_os_find_devices: Found 007 on 002
skipping descriptor 0x9
skipped 1 class/vendor specific endpoint descriptors
skipped 4 class/vendor specific interface descriptors
skipping descriptor 0x9
skipped 1 class/vendor specific endpoint descriptors
skipped 3 class/vendor specific interface descriptors
usb_os_find_devices: Found 001 on 002
error obtaining child information: Inappropriate ioctl for device
usb_os_find_devices: Found 002 on 001
skipping descriptor 0xB
skipped 1 class/vendor specific endpoint descriptors
skipped 5 class/vendor specific interface descriptors
skipping descriptor 0x25
skipped 1 class/vendor specific endpoint descriptors
skipped 9 class/vendor specific interface descriptors
usb_os_find_devices: Found 001 on 001
error obtaining child information: Inappropriate ioctl for device
Looking for default devices ...
  searching devices, found USB ID 1d6b:0001
  searching devices, found USB ID 1d6b:0001
  searching devices, found USB ID 09da:000a
  searching devices, found USB ID 1d6b:0001
  searching devices, found USB ID 1d6b:0001
  searching devices, found USB ID 1d6b:0001
  searching devices, found USB ID 1d6b:0001
  searching devices, found USB ID 0525:a4a2
   found matching vendor ID
   found matching product ID
   adding device
  searching devices, found USB ID 1d6b:0002
  searching devices, found USB ID 1210:25f4
  searching devices, found USB ID 1d6b:0002
Found device in default mode, class or configuration (1)
Accessing device 007 on bus 002 ...
Getting the current device configuration ...
OK, got current device configuration (1)
Using interface number 0
Error: message endpoint not given or found. Aborting.

Как я понимаю, проблема с message endpoint из-за того, что не заданы TargetProduct и TargetVendor. Да, я видел в примерах в Сети, что кроме параметров -v и -p используются так же -V и -P, причём  -V совпадает с -v, а -P принимает отдельное значение. Но откуда оно берётся?
Или у меня вообще в корне неверный подход и нужно делать по другому?

2

Случайно, при подключении устройств вида /dev/ttyUSB0 не создаётся?
Гляньте

ls -l /dev/ttyUSB*
Был, был и весь вышел...

Да нет, в том-то и дело...
Я думал оно после работы usb_modeswitch должно появиться.
Да, совсем забыл про ядро же...
USB Serial Converter Support включено, а в нём включено:

USB Serial Console device support
USB Generic Serial Driver
USB driver for GSM and CDMA modems

Вроде же ничего не нужно больше?

4 (11.06.2013 04:58:26 отредактировано bobr)

У меня была такая трубка. При подключении на телефоне следует выбирать "PC Suite mode" и телефон будет работать в режиме модема. Кроме того, в этом режиме появляется сетевой интерфейс usb0, как на самом телефоне, так и на компьтере. Можно расшаривать интернеты и через него (что, имхо, удобнее, так как в режиме модема нужно отключать интернет на самом телефоне). Делается это совершенно стандартным способом: на телефоне настраивается на маскарадинг iptables, а на компьютере присваивается ip-адрес интерфейсу usb0 и через него делается default route. Разумеется, для всей этой ботвы нужны какие-то ядерные модули, но сейчас уж не вспомню какие. Трубку потерял )-: а жаль, хорошая трубка.
Да, usb_modeswitch здесь совершенно ни при чем и с этим телефоном он работать не будет.
upd: Кстати, если я не ошибаюсь, то устройство модема при таком подключении называется не /dev/ttyUSB0, а /dev/ttyACM0

Йа тьомный эльф

5

bobr⇓ пишет:

upd: Кстати, если я не ошибаюсь, то устройство модема при таком подключении называется не /dev/ttyUSB0, а /dev/ttyACM0

У меня — ttyUSB* (их несколько появляется, и нужно подбирать то устройство, через которое реально получится соединиться), правда, телефоны другие и совсем не Gentoo ab

openSUSE Leap 15.1
bobr пишет:

У меня была такая трубка. При подключении на телефоне следует выбирать "PC Suite mode" и телефон будет работать в режиме модема. Кроме того, в этом режиме появляется сетевой интерфейс usb0, как на самом телефоне, так и на компьтере. Можно расшаривать интернеты и через него (что, имхо, удобнее, так как в режиме модема нужно отключать интернет на самом телефоне). Делается это совершенно стандартным способом: на телефоне настраивается на маскарадинг iptables, а на компьютере присваивается ip-адрес интерфейсу usb0 и через него делается default route. Разумеется, для всей этой ботвы нужны какие-то ядерные модули, но сейчас уж не вспомню какие. Трубку потерял )-: а жаль, хорошая трубка.
Да, usb_modeswitch здесь совершенно ни при чем и с этим телефоном он работать не будет.
upd: Кстати, если я не ошибаюсь, то устройство модема при таком подключении называется не /dev/ttyUSB0, а /dev/ttyACM0

Ага, я значит совсем не в том направлении копал.
Да, действительно, при выборе PC Suite появляется устройство /dev/ttyACM0, но вот интерфейс usb0 не появляется. Вообще ifconfig -a ничего нового не показывает. А dmesg говорит такое:

[  159.145082] usb 1-1: new high-speed USB device number 5 using ehci_hcd
[  159.261932] cdc_acm 1-1:1.6: This device cannot do calls on its own. It is not a modem.
[  159.262070] cdc_acm 1-1:1.6: ttyACM0: USB ACM device

Почему not a modem? Чего не хватает? Это в телефоне нужно копаться или на самом компе? В компе я уже всё из ветки USB Serial Converter Support включил. На телефоне тоже и ядро последнее, и прошивка обновлённая. Не, если это проблема с телефоном - то чёрт с ним, поковыряю ещё, может что и выйдет, но на компе ничего более настроить не нужно?

7

cypherpunks01⇓ пишет:

Почему not a modem? Чего не хватает?

Вот уж и не помню точно, но, по-моему, это не важно. Работать все равно будет.

Йа тьомный эльф