LINUX.ORG.RU

GSM-модем не отвечает в unix-консоли, но отвечает в windows

 


0

1

Здравствуйте,

Имею GSM-модем (GSM GPRS модем olcom SL116 на чипе Enfora), в котором производитель на кой-то ляд изменил idProduct в описании SiLabs CP2102 - из-за этого устройство не появлялось как /dev/ttyUSB.

После плясок с бубном (USB: производитель изменил idProduct и устройство не появляется в /dev/) и отправки (по совету мудрого Vel)

modprobe usbserial vendor=0x10c4 product=0x8777

устройство прописалось как /dev/ttyUSB0, но на AT-команды не отвечает..

Пробовал просто echo, пробовал после stty (raw, не raw - разные варианты). Либо пишет «устройство занято», либо проглатывает команды, но в ответ молчит, как партизан.

К слову, под виндой, в CoolTerm замечательно отвечает и на AT, и на ATI. Настройки соединения CoolTerm стандартные (9600 8-N-1).

Что я делаю не так?..


а через minicom тоже молчит?

Не все производители просто так меняют ID устройств. Под оффтопик наверняки драйвера специальные.

vel ★★★★★
()
Ответ на: комментарий от vel

Да у модемов обычно несолько /dev/ttyUSB* устройств, пионерским методом с modprobe usbserial vendor= product= оно не обязано работать. Пусть пробует новое ядро.

anonymous
()

В куске лога, который ты привёл в том треде, видно, что «здоровый» модем цепляется драйвером cp210x, а не usbserial. Следовательно, попробуй пересобрать ядро, добавив в исходник этого самого cp210x в таблицу поддерживаемых устройств (и в modalias) свою пару VID:PID. Или, действительно, пробуй новое ядро — есть вероятность того, что там это уже сделали.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от vel

Vel, зачем производитель поменял idProduct - загадка. Но я сомневаюсь, что как-то хитро обрабатываются Rx, Tx..

Самое интересное, что я нашел утилу фирменную от SiLabs, для смены ID, но она не работает - то ли из-за измененных ID, то ли потому, что был поставлен флаг «запретить обратную смену ID» программа не видит этот «нестандартный» CP2102 (((

Попробовал minicom так: minicom -b 9600 -D /dev/ttyUSB0 -8 открывается окно, там я проверяю, что 9600 8N1, включаю эхо, добавление LF и пр, пишу AT-команды, но ничего не получаю.

В правом нижнем углу замечаю «не на л» - видимо, устройство не на линии.

borey
() автор топика
Ответ на: комментарий от beastie

Вряд ли. В той ветке четко говорили, что на SMP Debian 3.2.41-2 работает, а у меня SMP Debian 3.2.51-1, т.е. более поздняя..

borey
() автор топика
Ответ на: комментарий от intelfx

Этот кусок лога (где «цепляется» нормально) - это когда я «голый» USB-TTL переходник на том же чипе втыкал в USB.

Может, ткнете ссылкой, как добавить синоним vendor:product и пересобрать/перегрузить модуль (или как вариант, пересобрать модуль в ядре с новым синонимом)?

Я подозреваю, что нужно просто сказать, что мои vendor=0x10c4 product=0x8777 - то же самое, что vendor=0x10c4 product=0xea60

borey
() автор топика
Ответ на: комментарий от anonymous

Это у модных 3G/4G-GSM-модемов так, как Вы описали, и там modeswitch помогает.

У меня же - плата-модем, Rx/Tx которой просто выведены через TTL-USB-переходник в USB.

borey
() автор топика
Ответ на: комментарий от borey

А настоящего ком порта нету на пк?

anonymous
()
Ответ на: комментарий от borey

добавить ID-шник не сложно, если есть опыт сборки ядра.

берем исходники ядра. идем в drivers/usb/serial/cp210x.c

находим строчку типа { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */

после нее добавляем аналогично с 0x8777 и собираем модуль.

vel ★★★★★
()
Ответ на: комментарий от vel

Ух.. нет, пока такого опыта не было, но.. у меня есть тестовый комп и тестовый же debian :)

Думаю, попробую, рискну.

borey
() автор топика
Ответ на: комментарий от borey

echo «AT\n» > /dev/ttyUSB0

Во первых, если уж на то пошло, 'echo -e'.
Во вторых, и главное, модемы обычно настроены не на LF (\n), а на CR (\r).
Это же касается и minicom.

ABW ★★★★★
()
Ответ на: комментарий от borey

Не факт. Там много от чего зависит. От сломанного драйвера и до вариций версии чипа.

К слову, под виндой, в CoolTerm замечательно отвечает

На том же компе? Тогда поздравляю — ты нарвался на тот же баг, что и я. Под линуксом оно работать не будет. Драйвер, на сколько мне известно всё ещё не починили.

Меняй адаптер — с другим чипом есть мизерный шанс, что заработает.

beastie ★★★★★
()
Ответ на: комментарий от ABW

Пробовал

echo -e «AT\r» > /dev/ttyUSB0

тоже не работает..

borey
() автор топика

ModemManager есть? В современном линаксе куча говна любит «опрашивать» воткнутые устройства. Я так с buspirate батхерта отхватил..

vasily_pupkin ★★★★★
()
Ответ на: комментарий от beastie

Под виндой, в CoolTerm

Не, на другом компьютере. Но почти уверен, что баг все же не в ядре, а в том, что modprobe, хоть и показал устройство, реально не «подцепил» его..

borey
() автор топика

И судя по всему тебе надо грузить именно cp210x

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Не, у меня чистая консоль - для «игрищ не на продакшене» :)

borey
() автор топика
Ответ на: комментарий от Radjah

Переходник встроен в плату - просто так не поменять. Наверное, проще перепаять CP2102 с «чистого» переходника (с «заводскими» vendor/product).

фото

borey
() автор топика

Совет друга

Здравствуйте Борей.

Срочно прекратите заниматься фигней, Вам уже 37 лет)

anonymous
()
Ответ на: комментарий от Radjah

Ага, мне вот еще плясок с синезубом не хватает ))

Тем более, что на сервере его нет и не предвидится.

Перепаял с адаптера микруху с родными (заводскими) vendor/product - взлетело без бубна:

[  160.216030] usb 2-1: new full-speed USB device number 2 using uhci_hcd
[  160.384053] usb 2-1: New USB device found, idVendor=10c4, idProduct=ea60
[  160.384061] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  160.384069] usb 2-1: Product: CP2102 USB to UART Bridge Controller
[  160.384075] usb 2-1: Manufacturer: Silicon Labs
[  160.384080] usb 2-1: SerialNumber: 0001
[  160.440175] usbcore: registered new interface driver usbserial
[  160.440215] USB Serial support registered for generic
[  160.440286] usbcore: registered new interface driver usbserial_generic
[  160.440292] usbserial: USB Serial Driver core
[  160.449175] USB Serial support registered for cp210x
[  160.449253] cp210x 2-1:1.0: cp210x converter detected
[  160.560031] usb 2-1: reset full-speed USB device number 2 using uhci_hcd
[  160.711376] usb 2-1: cp210x converter now attached to ttyUSB0
[  160.711420] usbcore: registered new interface driver cp210x
[  160.711426] cp210x: v0.09:Silicon Labs CP210x RS232 serial adaptor driver

Был затык с тем, что устройство почему-то оказалось busy, посмотрел - чем занято:

fuser -v -m /dev/ttyUSB0
увидел два kernel-процесса, один - mount то ли /dev/, то ли swap и второй - что-то вроде этого.

Не сохранил, переткнул провод - он определился на /dev/ttyUSB1, но теперь затык в другом.

Отправляю:

stty 9600 -F /dev/ttyUSB1
echo -e "ATI\r" > /dev/ttyUSB1

А в ответ - такая ерунда сыпется:

cat /dev/ttyUSB1
ATI
Enfora, Inc.

ERROR
ATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^JATI^M^M^JEnfora, Inc.^M^J^M^JERROR^M^J

В винде в CoolTerm с наcтройками 9600 8N1 отвечает без мусора..

borey
() автор топика
Ответ на: комментарий от borey

Аллилуя, я победил и эту напасть, подобрав правильные параметры stty!

Беда была в эхе - как только я его отключил (-echo) - мусор пропал.

echo -e "AT\r" > /dev/ttyUSB1
echo -e "ATI\r" > /dev/ttyUSB1

ответы:

AT
ERROR
ATI
Enfora, Inc.

OK

borey
() автор топика
Ответ на: комментарий от borey

Кроме того, ты посылаешь совершенно лишнее '\n'.
Следует использовать «echo -n -e», а лучше «printf 'AT\r'».

ABW ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.