Подключение LTE модема Huawei 3372S
-
Всем привет!
Система: физическая, PfSense 2.1.5 x86 (обновление невозможно)
Есть 2 постоянных физических порта eth1, eth2 и появляющийся только после исполнения скрипта из /rc.d третий eth3.
К сожалению, при каждой загрузке система обнаруживает отсутствие eth3 и выкидывает в режим ручного определения интерфейсов.
Вопрос: есть ли возможность указать PfSens-у продолжать загрузку с той конфигурацией интерфейсов, что и была до выключения? Или вообще запретить отслеживание изменений в аппаратной конфигурации? -
Может быть Вы смотрите на проблему с другой стороны?
Вопрос - почему этот интерфейс появляется только после отработки rc.d ?
В pfSense, на сколько я помню, rc.d не используется. -
А по другому он не появится (по крайней мере, я больше не знаю как). В rc.d запускается usb_modeswitch, который определённым образом инициализирует USB модем, что бы модуль cdc-ethernet создал ue0-интерфейс :P
-
А по другому он не появится (по крайней мере, я больше не знаю как). В rc.d запускается usb_modeswitch, который определённым образом инициализирует USB модем, что бы модуль cdc-ethernet создал ue0-интерфейс :P
Посмотрите тут, может быть получится выполнить Ваш скрипт раньше конфигурирования интерфейсов.
Опции <earlyshellcmd>и <shellcmd>в конфиге.</shellcmd></earlyshellcmd> -
Посмотрите тут, может быть получится выполнить Ваш скрипт раньше конфигурирования интерфейсов.
Опции <earlyshellcmd>и <shellcmd>в конфиге.</shellcmd></earlyshellcmd>Огромное спасибо! Это метод не сработал, ибо исполнение команд данного сервиса всё равно происходит поздно, но Вы натолкнули на способ использования devd.conf, с помощью которого всё стало определяться как и когда надо!
-
Посмотрите тут, может быть получится выполнить Ваш скрипт раньше конфигурирования интерфейсов.
Опции <earlyshellcmd>и <shellcmd>в конфиге.</shellcmd></earlyshellcmd>Огромное спасибо! Это метод не сработал, ибо исполнение команд данного сервиса всё равно происходит поздно, но Вы натолкнули на способ использования devd.conf, с помощью которого всё стало определяться как и когда надо!
Можно ли описать что и как правили? Спасибо.
-
Можно ли описать что и как правили? Спасибо.
Тогда более полно распишу, вдруг кому пригодиться.
Итак, задача: подключить LTE модем Huawei 3372S к устройству с PfSense (в моём случае 2.1.5 i386)
Описание касается только моего устройства, FIT-PC2, потому, что на других может будет всё попроще, например в VirtualBox-е (PfSense) и Windows 7 определение модема в нужной конфигурации происходит автоматически, без лишних телодвижений.1. Так как требуется работа multiWAN и опыт эксплуатации показал, что PPP-соединение работает в этом плане неудовлетворительно, то перепрошиваем модем в режим HiLink (фактически, роутер: веб-сервер, DHCP-сервер, полноценный usb-ethernet на выходе, отсутствие лишних последовательных портов в системе, а главное - автономная работа, потому что как только подали питание, его ОС и загрузилась сама и сеть нашла и даже подключилась по дефолтному профилю к этой сети, а нам остаётся только по DHCP адрес получить).
2. Основная задача
засадасостояла в том, что бы модем инициализировался в нужной конфигурации (композиции), вместо[2.1.5-RELEASE][root@pfSense.localdomain]/root(6): lsusb Bus /dev/usb Device /dev/ugen3.2: ID 12d1:1f01 Huawei Technologies Co., Ltd. Bus /dev/usb Device /dev/ugen0.2: ID 413c:2107 Dell Computer Corp. Bus /dev/usb Device /dev/ugen3.3: ID 148f:3070 Ralink Technology, Corp. Bus /dev/usb Device /dev/ugen3.1: ID 0000:0000 Bus /dev/usb Device /dev/ugen2.1: ID 0000:0000 Bus /dev/usb Device /dev/ugen1.1: ID 0000:0000 Bus /dev/usb Device /dev/ugen0.1: ID 0000:0000
нам надо было получить
[2.1.5-RELEASE][root@pfSense.localdomain]/root(6): lsusb Bus /dev/usb Device /dev/ugen3.2: ID 12d1:14dc Huawei Technologies Co., Ltd. Bus /dev/usb Device /dev/ugen0.2: ID 413c:2107 Dell Computer Corp. Bus /dev/usb Device /dev/ugen3.3: ID 148f:3070 Ralink Technology, Corp. Bus /dev/usb Device /dev/ugen3.1: ID 0000:0000 Bus /dev/usb Device /dev/ugen2.1: ID 0000:0000 Bus /dev/usb Device /dev/ugen1.1: ID 0000:0000 Bus /dev/usb Device /dev/ugen0.1: ID 0000:0000
так как первый вариант, это обычная конфигурация с кучей устройств (CD, cardreader и т.д.), а второй - нужный нам чистый usb-ethernet.
Поэтому применяем программу переключения режимов:usb_modeswitch -v 12d1 -p 1f01 -V 012d1 -P 014dс -M "55534243123456780000000000000a11062000000000000100000000000000" -W
Кстати, в 2.2.2 с более свежим usb_modeswitch ещё проще:
usb_modeswitch -v 12d1 -p 1f01 -J
3. Как было описано в постах выше, PfSense при загрузке определял отсутствие созданного ранее виртуального интерфейса и запускал процедуру ручного назначения, как при первом запуске, а значит надо было переключать модем на более раннем этапе. Используем возможность ручного описания устройств devd и редактируем /etc/devd.conf, добавляем в конец файла следующее:
attach 10 { device-name "ugen[0-9]+"; match "vendor" "0x12d1"; match "product" "0x1f01"; action "/path-to-script/scriptname.sh";
В принципе, всё понятно, ugen любой, указываем свои VID и PID (исходные) и прописываем путь к скрипту инициализации.
Собственно сам скрипт:
#!/bin/sh sleep 5 usb_modeswitch -v 12d1 -p 1f01 -V 012d1 -P 014dс -M "55534243123456780000000000000a11062000000000000100000000000000" -W sleep 10
Обратите внимание на паузы, особенно вторую, что бы система по-новой определила модем, подгрузила нужный драйвер и успела IP получить, с этим особо не заморачивался, просто сделал с запасом.
4. За создание usb-ethernet интерфейса отвечает стандартный модуль CDC Ethernet
[2.1.5-RELEASE][root@pfSense.localdomain]/root(2): kldstat -v | grep cdc 346 uhub/cdce
и после выполнения скрипта у вас появляется интерфейс:
cdce0: <cdc ethernet="" control="" model="" ecm="">on usbus3 ue0: <usb ethernet="">on cdce0</usb></cdc>
который виден в системе как обычный ethernet и стандартно настроен на получение адреса по DHCP
ifconfig
ue0: flags=8843 <up,broadcast,running,simplex,multicast>metric 0 mtu 1500 ether 0c:5b:8f:27:9a:64 inet 192.168.8.100 netmask 0xffffff00 broadcast 192.168.8.255 inet6 fe80::e5b:8fff:fe27:9a64%ue0 prefixlen 64 scopeid 0x7 nd6 options=1</up,broadcast,running,simplex,multicast>
netstat -rn
[2.1.5-RELEASE][root@pfSense.localdomain]/root(13): netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 192.168.8.1 UGS 0 86 ue0 127.0.0.1 link#5 UH 0 16 lo0 192.168.8.0/24 link#7 U 0 0 ue0 192.168.8.1 0c:5b:8f:27:9a:64 UHS 0 3696 ue0 192.168.8.100 link#7 UHS 0 0 lo0
-
Большое спасибо за подробное описание.
Вопрос :
Собственно сам скрипт:
#!/bin/sh sleep 5 usb_modeswitch -v 12d1 -p 1f01 -V 012d1 -P 014dс -M "55534243123456780000000000000a11062000000000000100000000000000" -W sleep 10
Это куда добавлять\вписывать ? Это скрипт для автозагрузки ?
P.s. Если можно, измените тему на что-то типа "Проблема с модемом LTE Huawei 3372S"
-
Большое спасибо за подробное описание.
Это куда добавлять\вписывать ?
P.s. Если можно, измените тему на что-то типа "Проблема с модемом LTE Huawei 3372S"
Добавлять в файл скрипта, он может находиться в любом удобном месте с произвольным именем, но должен быть исполняемым.
-
Большое спасибо за подробное описание.
Это куда добавлять\вписывать ?
P.s. Если можно, измените тему на что-то типа "Проблема с модемом LTE Huawei 3372S"
Добавлять в файл скрипта, он может находиться в любом удобном месте с произвольным именем, но должен быть исполняемым.
Ок. Создал я sh-файл, назначил ему "исполняемость". Где к нему путь добавлять - в автозагрузку ?
-
Ок. Создал я sh-файл, назначил ему "исполняемость". Где к нему путь добавлять - в автозагрузку ?
В разделе 3 - добавление скрипта для загрузки в файл /etc/devd.conf
-
Всё. Увидал. Еще раз спасибо ;D
-
2 Sector
Когда модем зависает как его приводите в чувство? Передёргивалки USB питания я в вашей железке не заметил. -
2 Sector
Когда модем зависает как его приводите в чувство? Передёргивалки USB питания я в вашей железке не заметил.А зачем ему зависать? Ни разу не наблюдал. Да и если такое может происходить постоянно, то надо или модем менять или что-то друге, система же неработоспособна будет.
-
Добрый день!
Хочу подключить к pfsense 2.1.5 amd64 данный модем. Прошил в HiLink (прошивка E3372Update_22.286.53.01.161_S_D_ADB_TLN_02).dmesg показывает:
ugen0.4: <huaweimobile>at usbus0
umass0: <mass storage="">on usbus0
umass0: SCSI over Bulk-Only; quirks = 0x0000
umass0:0:0 Attached to scbus0
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: UNIT ATTENTION asc:29,0 (Power on, reset, or bus device reset occurred)
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)usbconfig -d ugen0.4 dump_device_desc
ugen0.4: <huaweimobile huaweimobile="">at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ONbLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0210
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x00ff
bMaxPacketSize0 = 0x0040
idVendor = 0x12d1
idProduct = 0x1566
bcdDevice = 0x0102
iManufacturer = 0x0001 <huawei_mobile>iProduct = 0x0002 <huawei_mobile>iSerialNumber = 0x0000 <no string="">bNumConfigurations = 0x0001Получается у меня ID = 0x1566 (я правильно понимаю?). Меняю в
usb_modeswitch -v 12d1 -p 1f01 -V 012d1 -P 014dс -M "55534243123456780000000000000a11062000000000000100000000000000" -W
на 1566.
Все остальное по инструкции, но ue0 не появляется после перезагрузки.$ netstat -rn
Routing tablesInternet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGS 0 1396 re0
127.0.0.1 link#6 UH 0 16 lo0
192.168.0.0/24 link#2 U 0 1834 re1
192.168.0.1 link#2 UHS 0 0 lo0
192.168.1.0/24 link#1 U 0 0 re0
192.168.1.1 fc:aa:14:93:c4:03 UHS 0 852 re0
192.168.1.3 link#1 UHS 0 0 lo0Скажите, какой вы прошивкой прошили свой модем? Правильно ли я меняю ID модема?</no></huawei_mobile></huawei_mobile></huaweimobile></mass></huaweimobile>