dadv: (Default)
[personal profile] dadv


Использование USB-модема ZTE MF626 для организации (резервного) канала через билайновскую сеть 3G и FreeBSD 8.2-STABLE.

  • Модемы ZTE MF626, продаваемые в комплекте контрактов Билайна, могут быть привязаны к некоему Windows-based софту, ожидая от него во время соединения периодические сигналы через USB, в отсутствие которых модем быстро рвет связь. Первоначально модем нужно "отвязать" от этого. Метод отвязывания многократно описан в сети и выходит за рамки этой заметки.

  • Модем поддерживается драйвером u3g, поэтому, если драйвера нет в ядре, первым делом нужно подгрузить его (kldload u3g) и обеспечить подгрузку после ребута:

    echo 'u3g_load="YES"' >> /boot/loader.conf

  • После загрузки драйвера можно вставлять модем в порт USB. В выводе usbconfig модем определяется так:

    ugen1.3: <ZTE CDMA Technologies MSM ZTE, Incorporated> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

    Далее возможны варианты. Если после подключения модема появилось новое устройство вида /dev/cd0, значит, модем представляется CD-приводом, содержащим драйвера для Windows и прочих. Выводится модем из этого режима следующим образом:

    usbconfig -d 1.3 add_quirk UQ_MSC_EJECT_ZTESTOR
    camcontrol eject pass0

    Цифры 1.3 скопированы из вывода usbconfig, а 0 - из названия /dev/cd0, у вас могут быть другие значения.

    После этого пропадает /dev/cd0 и появляются /dev/cuaU0.0, /dev/cuaU0.1 и /dev/cuaU0.2. Опять же, конкретные цифры у вас могут быть другими при наличии в системе других устройств /dev/cuaUx.

    Необходимо добиться появления /dev/cuaUx.x, без этого к следующим шагам переходить рано.

  • Установка 3G PPP-соединения через mpd-5.5.

    Дописываем в файл /usr/local/etc/mpd5/mpd.script (или создаём, если не существует; отступы делаем табуляциями):

    dial-beeline:
            print "AT&F\r\n"
            match "ERROR" ModemError
            match "NO CARRIER" ModemError
            match "OK" NoEcho
            wait 5
            log "Modem not ready"
            failure
    NoEcho:
            print "ATE0\r\n"
            match "OK" ModemQuery
            wait 5
            log "Modem not ready"
            failure
    ModemQuery:
            print "AT+CRSM=176,12258,0,0,10\r\n"
            regex "[+]CRSM: .*\"(.*)\""
            wait 5
            log "Detected ICC (BCD): $matchedString1"
            match "OK"
            wait 5
            print "AT+CRSM=176,28423,0,0,9\r\n"
            regex "[+]CRSM: .*\"(.*)\""
            wait 5
            log "Detected IMSI: $matchedString1"
            match "OK"
            wait 5
            print "AT+CSQ\r\n"
            regex "[+]CSQ: .*$"
            wait 5
            log "Detected $matchedString0"
            match "OK"
            wait 5
    ModemInit:
            print "AT&D2&C1S0=0S7=60S30=0+CGDCONT=1,\"IP\",\"internet.beeline.ru\"\r\n"
            match "OK" DialOut
            match "ERROR" ModemError
            wait 5
    ModemError:
            log "Modem error"
            failure
    DialOut:
            log "Calling, waiting 60 seconds for connect..."
            print "ATDT*99#\r\n"
            match "CONNECT" Connected
            match "NO CARRIER" DialError
            match "BUSY" DialError
            wait 60
            log "Modem error"
            failure
    DialError:
            log "Cannot connect"
            failure
    Connected:
            log "Connected"
            success

    В /usr/local/etc/mpd5/mpd.conf пишем:

    startup:
            # configure mpd users
            set user admin xxx admin
            # configure the console
            set console self 127.0.0.1 5005
            set console open
    
    default:
            load beeline
    
    beeline:
            log +auth +bund +ccp +chat +echo +iface +ipcp +lcp +phys
            create bundle static BEELINE
            set bundle links B-Link
            set ipcp ranges 0.0.0.0/0 1.1.1.1/0
            set ipcp disable vjcomp
            create link static B-Link modem
            set link action bundle BEELINE
            
            set modem device /dev/cuaU0.2
            set modem speed 921600
            set modem watch -cd
            set modem watch -dsr
            set modem script dial-beeline
            
            set auth authname beeline
            set auth password beeline
            set link disable chap pap acfcomp protocomp
            set link keep-alive 6 60
            set link max-redial 0
            open

    Билайновский PPP не выдаёт нам IP-адрес своей стороны, поэтому команда set ipcp ranges 0.0.0.0/0 1.1.1.1/0 выглядит так странно. Если создаётся не резервный, а основной канал, не забудьте непосредственно перед этой командой вставить команду set iface route default для установки маршрута по умолчанию в этот сетевой интерфейс.

  • После запуска mpd5 в журнале работы получаем:

    mpd: [BEELINE] Bundle: Interface ng0 created
    mpd: [B-Link] Link: OPEN event
    mpd: [B-Link] LCP: Open event
    mpd: [B-Link] LCP: state change Initial --> Starting
    mpd: [B-Link] LCP: LayerStart
    mpd: [B-Link] chat: Detected ICC (BCD): 98765432109876543210
    mpd: [B-Link] chat: Detected IMSI: 123456789012345678
    mpd: [B-Link] chat: Detected +CSQ: 8,99
    mpd: [B-Link] chat: Calling, waiting 60 seconds for connect...
    mpd: [B-Link] chat: Connected
    mpd: [B-Link] MODEM: chat script succeeded
    mpd: [B-Link] Link: UP event
    mpd: [B-Link] LCP: Up event
    mpd: [B-Link] LCP: state change Starting --> Req-Sent
    mpd: [B-Link] LCP: SendConfigReq #1
    mpd: [B-Link]   ACCMAP 0x000a0000
    mpd: [B-Link]   MRU 1500
    mpd: [B-Link]   MAGICNUM 4d142054
    mpd: [B-Link] LCP: rec'd Configure Request #0 (Req-Sent)
    mpd: [B-Link]   ACCMAP 0x00000000
    mpd: [B-Link]   AUTHPROTO CHAP MD5
    mpd: [B-Link]   MAGICNUM 2632583e
    mpd: [B-Link]   PROTOCOMP
    mpd: [B-Link]   ACFCOMP
    mpd: [B-Link] LCP: SendConfigAck #0
    mpd: [B-Link]   ACCMAP 0x00000000
    mpd: [B-Link]   AUTHPROTO CHAP MD5
    mpd: [B-Link]   MAGICNUM 2632583e
    mpd: [B-Link]   PROTOCOMP
    mpd: [B-Link]   ACFCOMP
    mpd: [B-Link] LCP: state change Req-Sent --> Ack-Sent
    mpd: [B-Link] LCP: rec'd Configure Ack #1 (Ack-Sent)
    mpd: [B-Link]   ACCMAP 0x000a0000
    mpd: [B-Link]   MRU 1500
    mpd: [B-Link]   MAGICNUM 4d142054
    mpd: [B-Link] LCP: state change Ack-Sent --> Opened
    mpd: [B-Link] LCP: auth: peer wants CHAP, I want nothing
    mpd: [B-Link] LCP: LayerUp
    mpd: [B-Link] LCP: rec'd Discard Request #1 (Opened)
    mpd: [B-Link] CHAP: rec'd CHALLENGE #1 len: 35
    mpd: [B-Link]   Name: "UMTS_CHAP_SRVR"
    mpd: [B-Link] CHAP: Using authname "beeline"
    mpd: [B-Link] CHAP: sending RESPONSE #1 len: 28
    mpd: [B-Link] CHAP: rec'd SUCCESS #1 len: 4
    mpd: [B-Link] LCP: authorization successful
    mpd: [B-Link] Link: Matched action 'bundle "BEELINE" ""'
    mpd: [B-Link] Link: Join bundle "BEELINE"
    mpd: [BEELINE] Bundle: Status update: up 1 link, total bandwidth 28800 bps
    mpd: [BEELINE] IPCP: Open event
    mpd: [BEELINE] IPCP: state change Initial --> Starting
    mpd: [BEELINE] IPCP: LayerStart
    mpd: [BEELINE] IPCP: Up event
    mpd: [BEELINE] IPCP: state change Starting --> Req-Sent
    mpd: [BEELINE] IPCP: SendConfigReq #1
    mpd: [BEELINE]   IPADDR 0.0.0.0
    mpd: [BEELINE] IPCP: rec'd Configure Nak #1 (Req-Sent)
    mpd: [BEELINE]   PRIDNS 10.11.12.13
    mpd: [BEELINE]   SECDNS 10.11.12.14
    mpd: [BEELINE]   PRINBNS 10.11.12.13
    mpd: [BEELINE]   SECNBNS 10.11.12.14
    mpd: [BEELINE] IPCP: SendConfigReq #2
    mpd: [BEELINE]   IPADDR 0.0.0.0
    mpd: [BEELINE] IPCP: rec'd Configure Nak #2 (Req-Sent)
    mpd: [BEELINE]   PRIDNS 10.11.12.13
    mpd: [BEELINE]   SECDNS 10.11.12.14
    mpd: [BEELINE]   PRINBNS 10.11.12.13
    mpd: [BEELINE]   SECNBNS 10.11.12.14
    mpd: [BEELINE] IPCP: SendConfigReq #3
    mpd: [BEELINE]   IPADDR 0.0.0.0
    mpd: [BEELINE] IPCP: rec'd Configure Request #0 (Req-Sent)
    mpd: [BEELINE] IPCP: SendConfigAck #0
    mpd: [BEELINE] IPCP: state change Req-Sent --> Ack-Sent
    mpd: [BEELINE] IPCP: rec'd Configure Nak #3 (Ack-Sent)
    mpd: [BEELINE]   IPADDR 10.207.212.144
    mpd: [BEELINE]     10.207.212.144 is OK
    mpd: [BEELINE] IPCP: SendConfigReq #4
    mpd: [BEELINE]   IPADDR 10.207.212.144
    mpd: [BEELINE] IPCP: rec'd Configure Ack #4 (Ack-Sent)
    mpd: [BEELINE]   IPADDR 10.207.212.144
    mpd: [BEELINE] IPCP: state change Ack-Sent --> Opened
    mpd: [BEELINE] IPCP: LayerUp
    mpd: [BEELINE]   10.207.212.144 -> 1.1.1.1
    mpd: [BEELINE] IFACE: Up event

    Строчка Detected +CSQ сообщает нам уровень сигнала, две предыдущие наши ICC-ID и IMSI соответственно.

    Вывод ifconfig выглядит так:

    ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1500
            inet 10.207.212.144 --> 1.1.1.1 netmask 0xffffffff


Date: 2011-11-02 18:30 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
не-не-не.
не говори мне, что во фре ты не видишь cd и da.
я-то вижу.

Date: 2011-11-02 18:35 (UTC)
From: [identity profile] blacklion.livejournal.com
Не-а. Вот не вижу и всё!

gateway# usbconfig
ugen0.1: <OHCI root HUB AMD> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1: <EHCI root HUB AMD> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen1.2: <HUAWEI Mobile HUAWEI Technology> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
gateway#


Всё. А вот настройки модема:

gateway# cu -l /dev/cuaU0.0 -s 115200
Connected
AT
OK
AT^U2DIAG?
276

OK
~.
gateway#

Date: 2011-11-02 18:51 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
ну umass-то ты загрузил?

Date: 2011-11-02 18:52 (UTC)
From: [identity profile] blacklion.livejournal.com
Нет, но разве он не должен быть виден как ещё один ugen? Или не должен?

Date: 2011-11-02 18:58 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
у меня -- не виден.

# usbconfig
ugen0.1:  at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen1.1:  at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen2.1:  at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen3.1:  at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen4.1:  at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen1.2:  at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
ugen1.3:  at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON


ugen1.3:  at usbus1
u3g0: 
[Error: Irreparable invalid markup ('<huawei [...] mobile,>') in entry. Owner must fix manually. Raw contents below.]

у меня -- не виден.

<pre>
# usbconfig
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen3.1: <UHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen4.1: <EHCI root HUB Intel> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen1.2: <Wireless Mini Mouse Primax Electronics> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
ugen1.3: <HUAWEI Mobile HUAWEI Technology> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
</pre>

<pre>
ugen1.3: <HUAWEI Technology> at usbus1
u3g0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on usbus1
u3g0: Found 3 ports.
umass0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on usbus1
umass0:2:0:-1: Attached to scbus2
(probe0:umass-sim0:0:0:0): SCSI status error
(probe0:umass-sim0:0:0:0): INQUIRY. CDB: 12 1 0 0 ff 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: ILLEGAL REQUEST asc:24,0 (Invalid field in CDB)
(probe0:umass-sim0:0:0:0): Error 22, Unretryable error
pass1 at umass-sim0 bus 0 scbus2 target 0 lun 0
pass1: <HUAWEI MMC Storage 2.31> Removable Direct Access SCSI-2 device
pass1: 1.000MB/s transfers
GEOM: new disk da0
da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
da0: <HUAWEI MMC Storage 2.31> Removable Direct Access SCSI-2 device
da0: 1.000MB/s transfers
da0: 3781MB (7744512 512 byte sectors: 255H 63S/T 482C)
GEOM: da0: partition 1 does not start on a track boundary.
GEOM: da0: partition 1 does not end on a track boundary.
</pre>

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios