pondělí 27. června 2016

pfSense 2.3.1_5 + LTE modem Huawei ME909u-521


V jedné lokalitě jsem se rozhodl provozovat LTE připojení. Volba nemohla padnout na nic jiného než mou oblíbený pfSense provozovaný na desce od PC Engines model APU 1D. Do routeru jsem si pořídil Mini PCI Express LTE modem Huawei ME909u-521. Dále je samozřejmě nutná anténa a pigtail viz ilustrační obrázek.

pfSense LTE

Již v minulosti jsem tento modem chtěl pořizovat, ale ve FreeBSD potažmo v pfSense nebyla podpora. To se ale nedávno změnilo.

Kontrolováno ve zdrojácích FreeBSD 10.3

grep -iR ME909U /usr/src/sys/dev/*        
/usr/src/sys/dev/usb/serial/u3g.c:    U3G_DEV(HUAWEI, ME909U,U3GINIT_HUAWEISCSI2),
/usr/src/sys/dev/usb/usbdevs:product HUAWEI ME909U        0x1573  LTE modem


Modem se na konzoli jeví např. takto.

dmesg | grep -i huawei
ugen3.2: at usbus3
u3g0: on usbus3


Podrobný výpis modemu. Vypis ala lsusb (Linux)

usbconfig -d ugen3.2 dump_device_desc
ugen3.2: at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x12d1
  idProduct = 0x1573
  bcdDevice = 0x0228
  iManufacturer = 0x0001 
  iProduct = 0x0002 
  iSerialNumber = 0x0003  0123456712ABCA17
  bNumConfigurations = 0x0003


Dostupné seriové porty modemu.

ls -1 /dev/cuaU0.*
/dev/cuaU0.0
/dev/cuaU0.1
/dev/cuaU0.2
/dev/cuaU0.3
/dev/cuaU0.4


Karta je osazena i GPS chipem, tak proto je tech portů vice.


Operátora jsem zvolil T-Mobile a SIM kartu a aktitovaným datovým tarifem a deaktivovaným PINem vložíme do SIM slotu na desce. Modem musí být vložen do Slotu (J16). Protože jen ten je propojen se SIM slotem viz popis k desce.

Pokud chceme modem otestovat ručně, můžeme z příkazové řádky.

Testovací AT příkazy převzaté z dokumentace.

cu -l /dev/cuaU0.0

Connected
AT^HCSQ?
^HCSQ: "LTE",56,49,158,20

ATI

Manufacturer: Huawei Technologies Co., Ltd.
Model: ME909u-521
Revision: 12.636.11.01.00
IMEI: 860461025220081
+GCAP: +CGSM

AT&V
&C: 1; &D: 2; &S: 0; E: 0; Q: 0; V: 1; X: 1; S0: 0; S3: 13; S4: 10;
S5: 8; S7: 0; S10: 14; +ICF: 3,3; +IFC: 0,0

AT+CGDCONT?
+CGDCONT: 1,"IP","internet.t-mobile.cz","0.0.0.0",0,0
+CGDCONT: 16,"IPV4V6","","0.0.0.0",0,0

AT^SYSINFOEX
^SYSINFOEX: 2,3,0,1,,6,"LTE",101,"LTE"


AT^IMEISV?
^IMEISV: 8604610252200816


Pokud nám modem takto reaguje je funkční a ovladače fungují. Pro zprovoznění LTE/4G musíme WAN interface nakonfigurovat pomocí PPP protokolu.

IPv4 Configuration Type     PPP
Country                     Czech Republic
Provider                    T-Mobile
Plan                        T-Mobile - internet.t-mobile.cz
Phone number                *99#
Access Point Name           internet.t-mobile.cz
Init string                 &F0E1Q0 +CMEE=2
Modem port                  /dev/cuaU0.0


Nastavení WAN_PPP




Status interface

Konfigurační soubor PPP který sestavil pfSense vypadá následovně.

cat /var/etc/mpd_wan.conf
startup:
    # configure the console
    set console close
    # configure the web server
    set web close

default:
pppclient:
    create bundle static wan
    set bundle enable ipv6cp
    set iface name ppp0
    set iface disable on-demand
    set iface idle 0
    set iface enable tcpmssfix
    set iface up-script /usr/local/sbin/ppp-linkup
    set iface down-script /usr/local/sbin/ppp-linkdown
    set ipcp ranges 0.0.0.0/0 10.64.64.0/0
    set ipcp enable req-pri-dns
    set ipcp enable req-sec-dns
    #log -bund -ccp -chat -iface -ipcp -lcp -link

    create link static wan_link0 modem
    set link action bundle wan
    set link disable multilink
    set link keep-alive 10 60
    set link max-redial 0
    set link disable chap pap
    set link accept chap pap eap
    set link disable incoming
    set link mtu 1492
    set auth authname "user"
    set auth password ��
    set modem device /dev/cuaU0.0
    set modem script DialPeer
    set modem idle-script Ringback
    set modem watch -cd
    set modem var $DialPrefix "DT"
    set modem var $Telephone "*99#"
    set modem var $InitString "&F0E1Q0 +CMEE=2"
    set modem var $APN "internet.t-mobile.cz"
    set modem var $APNum "1"
    open