Запускаем Huawei E3272 на pfSense

Краткая заметка по запуску 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.

 

Запускаем Huawei E3272 на pfSense: 5 комментариев

  1. Автор, Вам низкий поклон, так как сэкономили мне кучу времени. Отличный howto, не добавить, не убавить, всё максимально четко и конкретно! В результате e3276s aka Megafon 150-1, разлоченный и модифицированный (thanks to 4pda.ru), взлетел на FreeBSD 10.1 amd64, как ракета. А вот помнится, около двух лет назад долго и нудно запиливал его еще под FreeBSD 9 с родной прошивкой, в режиме модема через MPD, модифицируя u3g.c и usbdevs, так как не хотела фря дружить с Quanta…

  2. Небольшое дополнение…

    В некоторых случаях необходимо использование модема в режиме 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.

  3. а как мне подключить модем Huawey E3372h-153 в режиме Стик ? хочу чтобы он бриджом был.
    ТО есть pf должен получать белый IP от провайдера, чтобы работал VPN

    в Web интерфейсе 2.3.3 не выходит сделать это.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *