Краткая заметка по запуску Huawei E3272 с прошивкой HILINK на pfSense.
Устанавливаем pfSense, если он у нас не установлен. Конфигурируем выход в интернет для установки пакетов (нужен на время, пока не запустим донгл). Запускаем шелл.
Устанавливаем usb_modeswitch — pkg install usb_modeswitch.
Проверяем идентификатор модема, для чего надо найти его адрес на шине:
usbconfig ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen1.1: <EHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen0.2: <product 0x0024 vendor 0x8087> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen1.2: <product 0x0024 vendor 0x8087> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen0.3: <product 0x0103 vendor 0x04f3> at usbus0, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA) ugen0.4: <Cruzer Fit SanDisk> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (200mA) ugen0.5: <HUAWEI Mobile HUAWEI Technology> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
У меня — ugen0.5 — адрес 0.5
Делаем дамп идентификаторов :
usbconfig -d 0.5 dump_device_desc bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x00ff bMaxPacketSize0 = 0x0040 idVendor = 0x12d1 idProduct = 0x1f01 bcdDevice = 0x0102 iManufacturer = 0x0003 <HUAWEI Technology> iProduct = 0x0002 <HUAWEI Mobile> iSerialNumber = 0x0005 <FFFFFFFFFFFFFFFF> bNumConfigurations = 0x0001
Нас интересуют idProduct, как правило он равен 0x1f01, но все равно проверяем.
Создаем файл /usr/local/etc/modem.conf со следующим содержимым :
DisableSwitching=0 EnableLogging=1 DefaultVendor= 0x12d1 DefaultProduct=0x1f01 TargetVendor= 0x12d1 TargetProduct= 0x14db TargetClass= 01 DetachStorageOnly=0 HuaweiMode=0 MessageEndpoint= not set MessageContent="55534243123456780000000000000a11062000000000000100000000000000" NeedResponse=0 ResponseEndpoint= not set
Тестируем переключение донгла в требуемый нам режим :
usb_modeswitch -c modem.conf Look for target devices ... No devices in target mode or class found Look for default devices ... product ID matched Found devices in default mode (1) Access device 003 on bus 001 Current configuration number is 1 Use interface number 0 Use endpoints 0x01 (out) and 0x81 (in) USB description data (for identification) ------------------------- Manufacturer: HUAWEI Technology Product: HUAWEI Mobile Serial No.: FFFFFFFFFFFFFFFF ------------------------- Looking for active driver ... OK, driver detached Set up interface 0 Use endpoint 0x01 for message sending ... Trying to send message 1 to endpoint 0x01 ... OK, message successfully sent Reset response endpoint 0x81 Reset message endpoint 0x01 -> Run lsusb to note any changes. Bye!
Повторяем usbconfig -d 0.5 dump_device_desc, если все сделано правильно idProduct должен измениться на 0x14db.
usbconfig -d 0.5 dump_device_desc ugen0.5: <HUAWEI Mobile HUAWEI Technology> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0002 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x12d1 idProduct = 0x14db bcdDevice = 0x0102 iManufacturer = 0x0003 <HUAWEI Technology> iProduct = 0x0002 <HUAWEI Mobile> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001
На данном этапе в системе должен был появиться новый интерфейс ue0.
Теперь надо сделать что бы это все поднималось само.
Создаем файл /etc/devd/huawei.conf со следующим содержимым :
attach 10 { device-name "umass[0-9]+"; match "vendor" "0x12d1"; match "product" "0x1f01"; action "/usr/local/sbin/E3272.sh"; };
Создаем файл /usr/local/sbin/E3272.sh со следующим содержимым и ставим на него +x атрибут :
#!/bin/sh /usr/local/sbin/usb_modeswitch -c /usr/local/etc/modem.conf echo -n "Waitng device initialization..." sleep 20 echo "OK."
Перезапускаем devd демон, вытаскиваем и вставляем модем обратно. Если все сделано верно то где-то через 30 секунд в системе появится интерфейс ue0.
Автор, Вам низкий поклон, так как сэкономили мне кучу времени. Отличный howto, не добавить, не убавить, всё максимально четко и конкретно! В результате e3276s aka Megafon 150-1, разлоченный и модифицированный (thanks to 4pda.ru), взлетел на FreeBSD 10.1 amd64, как ракета. А вот помнится, около двух лет назад долго и нудно запиливал его еще под FreeBSD 9 с родной прошивкой, в режиме модема через MPD, модифицируя u3g.c и usbdevs, так как не хотела фря дружить с Quanta…
Небольшое дополнение…
В некоторых случаях необходимо использование модема в режиме modem mode (idProduct = 0x1001, с 3 виртуальными портами) для подключения через ppp.
Так вот, если модем переключить в этот режим, после запланированного или не запланированного отключения ppp, обратное подключение невозможно… 🙁
В логах:
Jun 17 15:03:22 testbsd-9 ppp[1772]: tun0: Chat: Send: ATD*99#^M
Jun 17 15:03:22 testbsd-9 ppp[1772]: tun0: Chat: Expect(2): CONNECT
Jun 17 15:03:22 testbsd-9 ppp[1772]: tun0: Chat: Received: ^M
Jun 17 15:03:22 testbsd-9 ppp[1772]: tun0: Chat: Received: ERROR^M
и всё, модем перестает понимать команды, включая ATD…
не помогают ни usbconfig -d reset ни usbconfig -d power_off / power_on…
Ни сбросом порта через usb_modeswitch -v 0x12d1 -p 0x1001 -R
Лечится только выдергиванием «свистка» и подключением обратно с запуском usb_modeswitch для изменения режима на 0x1001.
…дополнение…
актуально для модема:
Manufacturer: huawei
Model: E3531
Revision: 22.318.05.00.00
а как мне подключить модем Huawey E3372h-153 в режиме Стик ? хочу чтобы он бриджом был.
ТО есть pf должен получать белый IP от провайдера, чтобы работал VPN
в Web интерфейсе 2.3.3 не выходит сделать это.
<
Большое спасибо автору, инструкция очень помогла!!!