Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: Robert Szelepcsenyi 20. 07. 2021, 11:37:53
-
Zdravim,
Potrebujem pre ceskeho zakaznika rozbehat mobilne pripojenie v Linux-e. K dispozicii je modem Huawei ME906s LTE M.2 a datova SIM karta od T-mobile,.
Modem ako taky v Linuxe (OpenSuSE) funguje bez problemu - system ho okamzite rozpoznal. Jedine, co som spravil, bolo nastavenie v udev, ktorym som definoval staticke nazvy pre seriove porty a sietove rozhranie.
Nepoznam vhodny manazer mobilnych pripojeni pre OpenSuSE (poradte, ak nieco poznate), tak som modem konfiguroval cez minicom. V zasade som potreboval spravit len dve veci:
1. zadat APN - internet.t-mobile.cz - staci raz, lebo modem si to zapamata
2. nahodit pripojenie - nutne po kazdom starte/restarte systemu
V sietovych nastaveniach Linux-u je sietove rozhranie modemu nastavene uplne genericky na DHCP.
Po nahodeni spojenia sietove rozhranie modemu dostane korektne nastavenia, aspon ja si to myslim:
IP adresa: 100.X.Y.Z
Maska: 255.0.0.0
Brana: 100.0.0.1
DNS: 62.141.16.161, 62.141.16.177
Potialto je to uplne v poriadku, ale dalej sa neviem pohnut ani krok. DNS mi neresolvuje nazvy, neda sa dopingat na ziadnu IP na Internete. Brana vyzera byt nedostupna:
ping 100.0.0.1
PING 100.0.0.1 (100.0.0.1) 56(84) bytes of data.
From 10.65.179.194 icmp_seq=1 Destination Net Unreachable
Ked vsak skusim pignut IP, z ktore dostavam uvedene chybove hlaseniem tak to ide:
ping 10.65.179.194
PING 10.65.179.194 (10.65.179.194) 56(84) bytes of data.
64 bytes from 10.65.179.194: icmp_seq=1 ttl=63 time=111 ms
64 bytes from 10.65.179.194: icmp_seq=2 ttl=63 time=15.4 ms
64 bytes from 10.65.179.194: icmp_seq=3 ttl=63 time=26.3 ms
64 bytes from 10.65.179.194: icmp_seq=4 ttl=63 time=22.2 ms
Uvedena IP je urcite v sieti t-mobile, lebo Linux s modemom je pripojeny do LAN zakaznika s IP rozsahom 192.168.2.0/24 bez predvolenej brany a aj odozva 15-25 ms zodpoveda mobilnej sieti.
T.j. modem komunikuje, prenasa pakety, ale operator ma jednoducho nepusti dalej.
Podla tvrdenia zakaznka rovnaka SIM funguje v externom modeme bez problemu.
Fakt nechapem. Zjavne tam je problem este v nejakom nastaveni, ale netusim, ze v akom. Zeby nieco s APN?
Za akekolvek rady budem velmi vdacny.
-
APN je potřeba definovat při každém navázání spojení. Pokud to neuděláte, riskujete, že se použije defaultní (APN s prázdným názvem, ""). A defaultní APN Vás připojí jen do sítě pro IMS (VoLTE, VoWiFi), bez konektivity do Internetu.
T-Mobile skutečně přiděluje IP adresy z 100.64.0.0/10, a to jak pro APN IMS ("") tak pro APN Internet ("internet.t-mobile.cz").
Maska 255.0.0.0 a brána 100.0.0.1 jsou ale špatně. Odkud se berou?
Tyhle modemy vytvářejí fake ethernet, ale obvykle pracují s menší IPv4 maskou, třeba /30.
Jak přesně "vytáčíte" spojení? Minicom je terminál, ale tím se rozhodně nic nevytáčí. Používáte PPP rozhraní? QMI (? Jakým nástrojem nastavujete APN?
Já třeba mám takovéhle jednoduché, fousaté (takže se nesmějte:-)) skripty pro mmcli (wrapper pro vytáčení spojení pro Qualcomm modem):
# cat /usr/local/bin/wwan-up.sh
#!/bin/bash
MODEMID=`mmcli -L | grep QUALCOMM | awk '{print $1}' | awk -F'/' '{print $6}'`
if [ "q$MODEMID" == "q" ]; then
echo "Modem not found."
exit 3
fi
APN=$1
PDN=$2
if [ "q$APN" == "q" ]; then
echo "APN not set; Usage: $0 <ApnName> <ipv4|ipv6|ipv4v6>"
exit 3
fi
if [ "q$PDN" == "q" ]; then
echo "PDN not set; Usage: $0 <ApnName> <ipv4|ipv6|ipv4v6>"
exit 3
fi
mmcli -m $MODEMID --simple-connect="apn=$APN,ip-type=$PDN"
exit 0
# cat /usr/local/bin/wwan-down.sh
#!/bin/bash
MODEMID=`mmcli -L | grep QUALCOMM | awk '{print $1}' | awk -F'/' '{print $6}'`
if [ "q$MODEMID" == "q" ]; then
echo "Modem not found."
exit 3
fi
mmcli -m $MODEMID --simple-disconnect
exit 0
# cat /usr/local/bin/wwan-route.sh
#!/bin/bash
IP=`ip a s dev wwan0 | grep -w inet | awk '{print $2}' | sed 's/\/30//'`
IP1=`echo $IP | awk -F. '{print $1 "." $2 "." $3}'`
IP2=`echo $IP | awk -F. '{print $4}'`
IP3=$((IP2+1))
GW=$IP1.$IP3
echo "Executing ip route add default via $GW"
ip route add default via $GW
# cat /usr/local/bin/wwan-ipv6.sh
#!/bin/bash
IF=$1
if [ "q$IF" == "q" ]; then
echo "Usage: $0 <IfaceName>"
exit 3
fi
echo 2 > /proc/sys/net/ipv6/conf/$IF/accept_ra
echo "Sleeping for 2s"
sleep 2
echo "Trying to get IPv6 prefix..."
rdisc6 -1 $IF
exit 0
A v (Debian/Ubuntu) /etc/network/interfaces pak mám:
auto wwan0
iface wwan0 inet dhcp
pre-up /usr/bin/qmi-network `ls -1 /dev/cdc-wdm*|head -n1` start
post-down /usr/bin/qmi-network `ls -1 /dev/cdc-wdm*|head -n1` stop
pre-up /usr/local/bin/wwan-up.sh internet.t-mobile.cz ipv4 || exit 0
post-down /usr/local/bin/wwan-down.sh
# post-up /usr/local/bin/wwan-ipv6.sh wwan0 || exit 0
post-up /usr/local/bin/route-metric.sh wwan0 5 || exit 0
post-up /sbin/iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE || exit 0
post-up chmod a+rw /dev/cdc-wdm* || exit 0
-
Jestli to má sériák a umí to přes něj PPP, tak bych zkusil https://jenda.hrach.eu/w/3g
-
Ja vobec nic nevytacam. Vidim tam ten fake ethernet, ktory po nahodeni spojenia dostane uvedene sietove nastavenia a zjavne cezen tecu nejake data do siete operatora.
Ten modem ma zo 4 seriove porty. Na dva z nich sa da pripojit cez minicom a vydavat AT prikazy.
APN som nastavil podla tohto:
https://www.t-mobile.cz/dcpublic/Vseobecne_nastaveni.pdf
Vsimol som si tam akesi vytacane cislo *99# alebo *99***1# ale neviem, naco to je, lebo tam prave vidim ten fake ethernet, cez ktory tecu nejake data. Je tam potrebne pouzit PPP? Som myslel, ze v pripade LTE to uz nie je potrebne.
Ked v minicom skusim zadat prikaz "atdt*99#", tak mi to hodi "CONNECT 150000000". Akekolvek ine cislo mi vrati NO CARRIER.
-
mam sice jinej modem "Quectel EC25EFA miniPCIe" a jinej OS "Xubuntu 20.04",
ale take to vytvori 4x ttyUSBx, na 2 z nich se lze pripojit Minicomem a psat AT prikazy...
pripojeni realizuju par kliknutim v NetworkManager (ikona site vedle hodin):
1. Upravit pripojeni, ikona +
2. Vyberte typ pripojeni: mobilni sirokopasmove
3. vyberu modem, resp. je uz predvybranej
4. zeme Czechia
5. poskytovatel: T-Mobile
6. Tarif: vychozi
7. Pouzit
pak zaskrtnu v te ikone vedle hodin:
- "Povolit mobilni sirokopasmove pripojeni"
- po chvilce se zobrazi polozka "T-Mobile"...
# pripadne "skriptem" zapnuti+pripojeni
wwan on
nmcli con up T-Mobile
# odpojeni+vypnuti
nmcli con down T-Mobile
wwan off
(nastroj wwan je dostupny po doinstalovani balicku tlp (https://www.root.cz/clanky/tlp-prodluzte-vydrz-notebooku-az-o-30/) (a je mozne ze bez nej je wwan vzdy zaplej))
edit: nazev u up/down T-Mobile je nazev profilu, pokud das jinej tak vypsat jinej, seznam zobrazi "nmcli con"
-
Presne tak to mam aj ja - objavia sa mi 4 seriove porty, pricom do dvoch z nich sa daju pisat AT prikazy. Doinstaloval som si do systemu ppp, po com sa mi vsak tie porty stratili! Toto vidim v dmesg:
[ 24.916932] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
[ 24.916952] option 1-8:2.2: device disconnected
[ 24.917041] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
[ 24.917056] option 1-8:2.3: device disconnected
[ 24.917138] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
[ 24.917153] option 1-8:2.4: device disconnected
[ 24.917240] option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3
[ 24.917257] option 1-8:2.5: device disconnected
[ 24.917340] option1 ttyUSB4: GSM modem (1-port) converter now disconnected from ttyUSB4
[ 24.917354] option 1-8:2.6: device disconnected
Ja uz fakt neviem, co s tym. Je tam fake ethernet, cez ktory sa neda komunikovat, ked to chcem skusti cez ppp a nainstalujem prislusny balik, tak sa mi tie seriove porty jednoducho stratia.
-
A este predtym vypise:
cdc_ether 1-8:2.0 lte0: unregister 'cdc_ether' usb-0000:00:15.0-8, Mobile Broadband Network Device
Odinstalovanie ppp nepomohlo, lebo s ppp sa nainstaloval cely rad dalsich balikov a netusim, ktory to sposobuje, Nepochopim, ze ppp odpadli servioe porty, ktore s principu potrebujem pre komunikaciu s tym modemom. V tomto momente nevidim v systeme ziaden seriovy port modemu.
-
Ukažte výstup příkazů
mmcli -L
mmcli -m 0
mmcli -m 0 --simple-connect="apn=internet.t-mobile.cz,ip-type=ipv4"
mmcli -m 0
mmcli -m 0 --simple-disconnect
-
Pro zajímavost, Huawei E396:
root@router:~# mmcli -m 0 --simple-connect="apn=internet,ip-type=ipv4"
successfully connected the modem
root@router:~# ip link set wwan0 up
root@router:~# dhclient wwan0
root@router:~# ip a
(...)
37: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 3e:6f:59:2d:d8:14 brd ff:ff:ff:ff:ff:ff
inet 100.117.128.88/28 brd 100.117.128.95 scope global dynamic wwan0
valid_lft 7200sec preferred_lft 7200sec
inet6 fe80::3c6f:59ff:fe2d:d814/64 scope link
valid_lft forever preferred_lft forever
root@router:~# ip route | grep wwan
default via 100.117.128.81 dev wwan0
100.117.128.80/28 dev wwan0 proto kernel scope link src 100.117.128.88
root@router:~# mmcli -m 0
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: f13359cc0d01883b118ab5cdba4f19baa83e6248
--------------------------------
Hardware | manufacturer: QUALCOMM INCORPORATED
| model: 0
| firmware revision: M9200B-SCAQWBZD-3.3.330155T 1 [Aug 09 2012 23:00:00]
| h/w revision: 203F1000
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 860999001008525
--------------------------------
System | device: /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/usb3/3-1
| drivers: option1, qmi_wwan
| plugin: Huawei
| primary port: cdc-wdm0
| ports: cdc-wdm0 (qmi), ttyUSB2 (qcdm), wwan0 (net), ttyUSB1 (at),
| ttyUSB3 (at)
--------------------------------
Status | lock: sim-pin2
| unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
| state: connected
| power state: on
| access tech: lte
| signal quality: 67% (recent)
--------------------------------
Modes | supported: allowed: 2g; preferred: none
| allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 2g, 3g; preferred: 3g
| allowed: 2g, 3g; preferred: 2g
| allowed: 2g, 4g; preferred: 4g
| allowed: 2g, 4g; preferred: 2g
| allowed: 3g, 4g; preferred: 3g
| allowed: 3g, 4g; preferred: 4g
| allowed: 2g, 3g, 4g; preferred: 4g
| allowed: 2g, 3g, 4g; preferred: 3g
| allowed: 2g, 3g, 4g; preferred: 2g
| current: allowed: 2g, 3g, 4g; preferred: none
--------------------------------
Bands | supported: egsm, dcs, pcs, g850, utran-1, utran-3, utran-8
| current: egsm, dcs, pcs, g850, utran-1, utran-3, utran-8
--------------------------------
IP | supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP | imei: 860999001008525
| operator id: 23002
| operator name: O2.CZ
| registration: home
--------------------------------
3GPP EPS | ue mode of operation: ps-1
--------------------------------
SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0
--------------------------------
Bearer | dbus path: /org/freedesktop/ModemManager1/Bearer/1
| /org/freedesktop/ModemManager1/Bearer/0
root@router:~# mmcli -b 0
------------------------
General | dbus path: /org/freedesktop/ModemManager1/Bearer/0
| type: default
------------------------
Status | connected: no
| suspended: no
| ip timeout: 20
------------------------
Properties | apn: internet
| roaming: allowed
| ip type: ipv6
root@router:~# mmcli -b 1
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Bearer/1
| type: default
--------------------------------
Status | connected: yes
| suspended: no
| interface: wwan0
| ip timeout: 20
--------------------------------
Properties | apn: internet
| roaming: allowed
| ip type: ipv4
--------------------------------
IPv4 configuration | method: dhcp
| address: 100.117.128.88
| prefix: 30
| gateway: 100.117.128.89
| dns: 160.218.161.60, 194.228.211.33
| mtu: 1500
--------------------------------
Statistics | duration: 210
| bytes rx: 135013
| bytes tx: 367050
Zajímá Vás zejména:
state: connected
access tech: lte
signal quality: 67% (recent)
-
Nakoniec sa mi to podarilo rozbehat.
Ukazalo sa, ze problemy robi ModemManager, ktory nainstaluje baliky, z ktorych jeden sposobi odpojenie seriovych portov.
"mmcli -L" vrati "No modems found"
Po odstraneni vsetkych balikov, ktore dotiahne instalacia ModemManager a NetworkManager, sa mi podarilo opat spristupnit seriove porty modemu. Zafungoval postup od pouzivatela Jenda (3g [wiki]).
Dakujem vsetkym, ktori odpovedali. Rad by som to rozbehal na nejakej "vyssej" urovni cez nejaky vhodny Modem Manager, ale naozaj nerozumiem tomu, co sa deje. Zrejme je tam potrebna nejaka dalsia konfiguracia.
Nie je mi jasne ani to, na co vlastne sluzi ten fake ethernet.
-
Seriove porty se mohou "ztratit", pokud probehne USB modeswitch (nektera USB zarizeni, ktera modem prezentuje, se ztrati, jina ukazou). U nekterych Huawei zarizeni se pro ovladani modeswitch (zarizeni viditelna pred/po modeswitchi) pouziva prikaz
at^setport?
A1,a2:1,2,3,7,a1,a2
To by mohla byt pricina "zmizeni" seriovych portu. Instalace balicku PPP nic takoveho sama o sobe zpusobit nemuze.
Fake ethernet existuje proto, ze mobilni sit z podstaty fungovani stavi tunel mezi mobilem (modemem) a jadrem site a pridelena IP adresa ma masku /32. V pripade vytaceni PPP spojeni se onen konec tunelu posouva az do PPP klienta, takze s maskou /32 problem neni.
Na Ethernetu pro spravne fungovani DHCP je potreba maska vetsi, obvykle alespon /30. V mem prikladu nahore modem zvolil masku /28. No a technicky to funguje tak, ze uvnitr modemu nebo driveru je falesny DHCP server a modem pak prehazuje pakety z "tuneloveho interface" do "fake ethernet interface" - a zpet.
Dnesni modemy implementuji bud QMI protokol (pokud maji chipset od Qualcommu) nebo USB MBIM protokol; z pohledu uzivatele je to prakticky falesny ethernet, ktery pomoci DHCP klienta preda IP adresu z mobilni site (nebo /64 IPv6 prefix) az do Linuxoveho sitoveho stacku. MBIM dokonce neni vubec Ethernet (L2), predavaji se rovnou IP pakety (L3). Aby ale modem vedel, jakou IP adresu ma predat, musi nejdriv od uzivatele dostat nazev APN. Tedy totez, co se v pripade vytaceni pomoci PPP specifikuje v prikazu AT+CGDCONT=1,"IP","APN" (ta jednicka se pak pouziva pri vytaceni: *99***1# odkazuje na profil "1" nastaveny pres CGDCONT).
-
Pozor, některé modemy, např. Telit LE910EU, nesnáší CGDCONT 1, prý je to vyhrazeno v LTE pro síť (oficiální odpověď výrobce). A chovalo se to asi tak nějak podobně.
Takže zkus:
AT+CGDCONT=2,"IP","APN"
*99***2#
Vůbec mě to APN štve, každej operátor, dataplan, země to má jinak. Neexistuje nějaká možnost vyčtení ze SIM nebo nějakého veřejného seznamu všech?