Cezary napisał/a:

smile Jedni piszą ze w bandwidth monitorem

nie zauważyłem nigdzie takiego wpisu? chyba że w jakimś innym wątku
ja podałem tylko przetestowane przeze mnie rozwiązanie na potrzeby zgrania konfiguracji
z obserwacji wynikało, że za każdym razem tuż przed restartem aktywny był właśnie ten proces i jego "zabicie" eliminowało restart
nie wiem jakie wnioski wyciągali inni, bo ja problemów z bm nie zaobserwowałem

potwierdzam identyczne objawy na mr3040 z gg 1.6.0.4 +e3131
flash+kopia zapasowa nie pomógł, pomogło firstboot bez przywracania z kopii
natomiast wr842nd z gg 1.6.0.1 + e3131 z prawie identyczną konfiguracją  działa poprawnie

to jest jakiś problem z procesem hotplug-call
tymczasowe rozwiązanie eliminujące restart to dodanie do rc.local
(while true; do killall hotplug-call 2>/dev/null; sleep 10; done) &

Już działa.
Pomogła zmiana firmware na jakiś znaleziony w sieci, choć wielkiego wyboru pod tym względem nie było.
Co prawda nie obyło się bez chwilowego "uceglenia" modemu, ale huawei flasher sobie z tym poradził.

AT^SETPORT?
^SETPORT:A1,A2;1,3,2,A2

OK
AT^SETPORT=?
^SETPORT:A1: CDROM
^SETPORT:A2: SD
^SETPORT:A: BLUE TOOTH
^SETPORT:B: FINGER PRINT
^SETPORT:D: MMS
^SETPORT:E: PC VOICE
^SETPORT:1: MODEM
^SETPORT:2: PCUI
^SETPORT:3: DIAG
^SETPORT:4: PCSC
^SETPORT:5: GPS
^SETPORT:6: GPS CONTROL
^SETPORT:16: NCM

OK
AT^SYSCFG?
^SYSCFG:2,2,3FFFFFFF,1,2

OK
AT^SYSCFG=?
^SYSCFG: (2,13,14,16),(0-3),((2000000400380,"GSM900/GSM1800/WCDMA900/WCDMA2100"),(280000,"GSM850/GSM1900"),(3fffffff,"All bands")),(0-2),(0-4)

OK
AT^SYSCFGEX?
COMMAND NOT SUPPORT
AT^SYSCFGEX=?
COMMAND NOT SUPPORT
ATI
Manufacturer: huawei
Model: E3131A
Revision: 21.157.41.00.314
IMEI: tu_był_imei
+GCAP: +CGSM,+DS,+ES

OK
AT+CLAC
H
A
D
S0
S3
S4
S5
S6
S7
E
V
I
T
P
X
Z
Q
&C
&D
&F
+CMGS
+CMGW
+CMGR
+CMGL
+CMGC
+CMSS
+CNMA
+CSCS
+CMEE
+CREG
+CSDH
+CNMI
+CGREG
+CMMS
+CMGF
+CGSMS
+CSCA
+CSMS
+CSMP
+CPMS
+CMGD
+CSCB
^RSTRIGGER
+CLIP
+CLIR
+COLP
+CLCC
+CPAS
+CSTA
+CCUG
+CSSN
+CHLD
+CHUP
+VTS
^DTMF
+CRC
+CBST
+CMOD
^ALS
+CUUS1
^CDUR
+CGDCONT
+CGEQNEG
+CGDSCONT
+CGEQREQ
+CGEQMIN
+CGPADDR
+CGCMOD
+CGACT
+CGANS
+CGTFT
^CGDNS
+CGAUTO
+CGDATA
^TRIG
^GCFIND
+CGATT
^CGCATT
+COPS
+CGCLASS
+CFUN
+CGMI
+CGMM
+GMM
+CGMR
+CGSN
+GSN
+CIMI
+CSQ
^CBND
^CPDW
^HWVER
^HVER
^FHVER
^PFVER
+CLAC
^SN
+GCAP
^SRVST
^MODE
^SIMST
^HS
+CPLS
+CPOL
+CPBS
^CPBR
+CPBR
^CPBW
+CPBW
^SCPBW
^SCPBR
+CNUM
+CPBF
+CSIM
+CPIN
^ICCID
^CPIN
+CRSM
^PNN
^CPNN
^OPL
^CARDLOCK
+CCWA
+CCFC
+CUSD
^CMLCK
+CLCK
+CPWD
^CDSF
^CDCF
^CDQF
^DSFLOWCLR
^DSFLOWQRY
^DSFLOWRPT
^CPAM
^TIME
+CTZR
^STSF
^STGI
^STGR
^IMSICHG
^PDPSTUB
^CWAS
^CGAS
^MFREELOCKSIZE
^CPULOAD
^CELLINFO
^MEANRPT
^CCC
^SPN
^CARDMODE
^CURC
^CMSR
^CMGI
^CMMT
^AUTHDATA
^DHCP
^CRPN
^GLASTERR
^NDISDUP
^NDISCONN
^NDISSTATQRY
^NDISADD
^DNSP
^DNSS
^DLOADVER
^DLOADINFO
^NVBACKUP
^NVRESTORE
^AUTHORITYVER
^AUTHORITYID
^GODLOAD
^RESET
^NVRSTSTTS
^FLASHINFO
^COMM
^HSPA
^CSNR
^FREQLOCK
^CFPLMN
^CQST
^CAATT
^SYSINFO
^SYSCFG
^RXDIV
^PCSCINFO
^CELLSRCH
+CLVL
^VMSET
^CDTMFS
^CDTMFE
+GMI
+GMR
^SETPORT
^VERTIME
^APHPLMN
^ANQUERY
^APPWRONREG
^APTHROUGHPUT
^APCONNST
^WIFIGLOBALMAC
^SCID
+CSQLVL
^CSQLVLEXT
^APPDMVER
^AUTHVER
^IPV6CAP
^DHCPV6
^APRAINFO
^APLANADDR

OK

https://www.dropbox.com/s/2lzgnqxibms8m … _small.jpg
nie nowy i nie jest to Hilink
Ponieważ mam oba mogę stwierdzić, że funkcjonalnie to taki E3131s-2 obcięty do 7,2Mbps, ten sam zestaw komend AT itp, driver do windy, zasięg itp, ale fizycznie raczej nie jest to to samo, bo firmware jest inny.
Ten akurat kupiony w Casablance, ale w Polsce był chyba w dystrybucji Orange.

VID/PID 12d1:14fe, po przełączeniu 12d1:151d

Witam.
Modem jest wykrywany i łączy się poprawnie z siecią, ale system tworzy tylko urządzenie /dev/ttyUSB0
Brakuje interfejsu /dev/ttyUSB2 przez co nie można korzystać z 3ginfo czy też wysyłać SMS-ów

cat  /proc/bus/usb/devices

T:  Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=151d Rev= 1.02
S:  Manufacturer=HUAWEI
S:  Product=HUAWEI Mobile
C:* #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=01 Driver=option
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=03 Driver=(none)
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=02 Driver=(none)
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Dodam, że pod Linuksem dodatkowe interfejsy są dostępne normalnie.

7

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Witam .
Poniżej skrypty do obsługi kontrolera I2C tiny USB + ekspander PCF8574/PCF8574A.
Za wyborem I2C tiny przemawia fakt prostoty rozbudowy systemu o kolejne wejścia-wyjścia, niski koszt takiego takiego rozwiązania w przypadku dużej ilości linii, obsługa do 128 wejść-wyjść na pojedynczym kontrolerze oraz to, że każda linia może być traktowana zarówno jako wejście jaki i wyjście.
Minusem jest to, że sterowanie jest całkowicie oparte na programie umieszczonym na routerze, czyli np po restarcie zasilania linie nie wrócą do poprzednich stanów bez wykonania odpowiedniego skryptu na routerze, oczywiście o ile stan taki został wcześniej zapisany
Nie ma również sprzętowego wsparcia "chwilówek" tak jak jest to zrealizowane np w powerSwitch-u, czyli np restart linii zasilania samego routera jest utrudniony
Oczywiście są inne ekspandery niż PCF8574/PCF8574A, np 16 bitowe i nic nie stoi na przeszkodzie aby ich używać, ale te są łatwo dostępne, proste w obsłudze i tanie nawet w postaci gotowych modułów

Wersja podstawowa skryptu (jeden PCF8574):
w zmiennej EXP podajemy parametry takie jak szyna i adres ekspandera

#!/bin/sh
EXP="-y 0 0x20"
OUT="0 7" 

# usbrelay.sh polecenie [numer_portu]

# polecenie, pierwszy argument:
# off - wylacza przekaznik
#   usbrelay.sh off 0
# on - wlacza przekaznik
#   usbrelay.sh on 0
# status - podaje status wszystkich przekazników w postaci numer_przekaznika:on lub numer_portu:off, kazdy w osobnej linii
#   usbrelay.sh status
#   0:on
#   1:on
#   2:off
#   3:off
#   4:off
#   5:off
#   6:off
#   7:off

# numer_portu, drugi argument

case "$1" in
        off)
                i2cset $EXP $(($(i2cget $EXP)&~(2**$2)))
                ;;
        on)
                i2cset $EXP $(($(i2cget $EXP)|(2**$2)))
                ;;
        status)
                for i in seq($OUT); do echo $i:$((($(i2cget $EXP)>>i)%2))| sed 's/:1/:on/;s/:0/:off/'; done
                ;;
esac

exit 0

Wersja rozbudowana dwa ekspandery PCF8574 + PCF8574A + pamięć eeprom 24CXX do przechowywania stanu portów
zmienna MEM określa adres pamięci eeprom, EXP... to adresy ekspanderów, FIR... nr do jakiego będzie przypisany w usbrealy pierwszy port ekspandera, NUM... ilość linii ekspandera, skrypt łatwo można zmodyfikować do obsługi kolejnych portów

#!/bin/sh
MEM="-y 0 0x50"

FIR1=0
NUM1=8
EXP1="-y 0 0x20"

FIR2=8
NUM2=8
EXP2="-y 0 0x38"

# usbrelay.sh polecenie [numer_portu]

# polecenie, pierwszy argument:
# off - wylacza przekaznik
#   usbrelay.sh off 0
# on - wlacza przekaznik
#   usbrelay.sh on 0
# status - podaje status wszystkich przekazników w postaci numer_przekaznika:on lub numer_portu:off, kazdy w osobnej linii
#   usbrelay.sh status
#   0:on
#   1:on
#   2:off
#   3:off
#   4:off
#   5:off
#   6:off
#   7:off

# numer_portu, drugi argument

case "$1" in
        off)
                [ $2 -ge $FIR1 ] && [ $2 -lt $(($FIR1+$NUM1)) ] && i2cset $EXP1 $(($(i2cget $EXP1)&~(2**($2-$FIR1)))) && i2cset $MEM 1 $(i2cget $EXP1)
                [ $2 -ge $FIR2 ] && [ $2 -lt $(($FIR2+$NUM2)) ] && i2cset $EXP2 $(($(i2cget $EXP2)&~(2**($2-$FIR2)))) && i2cset $MEM 2 $(i2cget $EXP2)
                ;;
        on)
                [ $2 -ge $FIR1 ] && [ $2 -lt $(($FIR1+$NUM1)) ] && i2cset $EXP1 $(($(i2cget $EXP1)|(2**($2-$FIR1)))) && i2cset $MEM 1 $(i2cget $EXP1)
                [ $2 -ge $FIR2 ] && [ $2 -lt $(($FIR2+$NUM2)) ] && i2cset $EXP2 $(($(i2cget $EXP2)|(2**($2-$FIR2)))) && i2cset $MEM 2 $(i2cget $EXP2)
                ;;
        status)
                (for i in $(seq 0 $(($NUM1-1))); do echo $(($i+$FIR1)):$((($(i2cget $EXP1)>>i)%2))| sed 's/:1/:on/;s/:0/:off/'; done) 2>/dev/null
                (for i in $(seq 0 $(($NUM2-1))); do echo $(($i+$FIR2)):$((($(i2cget $EXP2)>>i)%2))| sed 's/:1/:on/;s/:0/:off/'; done) 2>/dev/null
                ;;
esac

exit 0

warto dodać wpisy np do /etc/rc.local przywracające stan wyjść zapisany w pamięci eeprom przy starcie routera

i2cset -y 0 0x20 $(i2cget -y 0 0x50 1)
i2cset -y 0 0x38 $(i2cget -y 0 0x50 2)