Mein Miix 320 lässt sich herrlich als Tablet verwenden! Ich nehme es im Bus zum Lesen – Bücher, c’t, heise+, News. Für letztere brauch man Internet (sic!). Klar, das Miix 320 hat ein integriertes LTE-Modem. Leider zeigt sich auch hier ein Problem, dass ich schon auf meinem eee PC hatte: Wenn der Rechner aus dem S3 erwacht, funktioniert ab und an das Modem nicht. Das Ab- und wieder Anschalten im Networkmanager bringt nix, es bleibt dabei, er kriegt keine Verbindung. Im journal findet man dann endlos sowas:
Nov 27 21:48:34 progress ModemManager[638]:
Nov 27 21:48:34 progress ModemManager[638]:
Nov 27 21:48:35 progress ModemManager[638]:
Nov 27 21:48:35 progress ModemManager[638]:
Nov 27 21:48:35 progress ModemManager[638]:
Nov 27 21:48:36 progress ModemManager[638]:
Nov 27 21:48:36 progress ModemManager[638]:
Nov 27 21:48:36 progress ModemManager[638]:
Nov 27 21:48:37 progress ModemManager[638]:
Nov 27 21:48:37 progress ModemManager[638]:
Nov 27 21:48:37 progress ModemManager[638]:
Nov 27 21:48:38 progress ModemManager[638]:
Netz kriegt man aber nicht, irgendwann gibt der Networkmanager auf. Wahrscheinlich hat sich das Modem in irgendeiner Form aufgehängt. Bei einem internen Modem am USB ist rausziehen und wieder reinstecken irgendwie keine Option. Was macht man dann? Neustart des ganzen Rechners? Nicht sehr elegant. Eigentlich muss es doch möglich sein, einen Reset des USB-Gerätes zu erzwingen. Und das geht tatsächlich! Die Antwort habe ich auf askubuntu.com gefunden.
Man muss herausfinden, wo genau am USB das Modem hängt:
root@progress:/# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/7p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 4: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 4: Dev 5, If 1, Class=CDC Data, Driver=cdc_mbim, 480M
|__ Port 4: Dev 5, If 0, Class=Communications, Driver=cdc_mbim, 480M
Mein Modem hängt an Bus 01, Port 4. Jetzt werfen wir das Modem aus:
root@progress:/# echo ‚1-4‘ > /sys/bus/usb/drivers/usb/unbind
1-4
1-4 ist das Echo auf der Console. Anschließend hängen wir es wieder ein
root@progress:/# echo ‚1-4‘ > /sys/bus/usb/drivers/usb/bind
1-4
Voilà, Modem wieder da und ich darf Internet. journalctl:
Nov 27 22:55:16 progress kernel: cdc_mbim 1-4:1.0: cdc-wdm1: USB WDM device
Nov 27 22:55:16 progress kernel: cdc_mbim 1-4:1.0 wwan0: register ‚cdc_mbim‘ at usb-0000:00:14.0-4, CDC MBIM, ce:f3:11:c8:59:ea
Nov 27 22:55:16 progress systemd-udevd[24550]: Using default interface naming scheme ‚v240‘.
Nov 27 22:55:16 progress systemd-udevd[24550]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Nov 27 22:55:16 progress kernel: cdc_mbim 1-4:1.0 wwp0s20u4: renamed from wwan0
Nov 27 22:55:16 progress mtp-probe[24559]: checking bus 1, device 5: „/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4“
Nov 27 22:55:16 progress mtp-probe[24559]: bus: 1, device: 5 was not an MTP device
Nov 27 22:55:16 progress systemd-udevd[24545]: Using default interface naming scheme ‚v240‘.
Nov 27 22:55:18 progress ModemManager[638]: opening device…
Nov 27 22:55:18 progress ModemManager[638]: [/dev/cdc-wdm1] Read max control message size from descriptors file: 512
Nov 27 22:55:18 progress ModemManager[638]: [/dev/cdc-wdm1] channel destroyed
Nov 27 22:55:18 progress ModemManager[638]:
Nov 27 22:55:18 progress ModemManager[638]:
Nov 27 22:55:18 progress ModemManager[638]: opening device…
…
Nov 27 22:55:29 progress NetworkManager[651]:
Nov 27 22:55:29 progress ModemManager[638]:
Nov 27 22:55:29 progress NetworkManager[651]:
Nov 27 22:55:29 progress NetworkManager[651]:
Nov 27 22:55:29 progress NetworkManager[651]:
Nov 27 22:55:39 progress ModemManager[638]:
Nov 27 22:55:39 progress ModemManager[638]:
Nov 27 22:55:39 progress ModemManager[638]:
Nov 27 22:55:39 progress ModemManager[638]:
Nov 27 22:55:39 progress NetworkManager[651]:
Nov 27 22:55:39 progress NetworkManager[651]:
Damit ist das Modem auch wieder aus dem Networkmanager heraus benutzbar.
Die beiden Zeilen packen wir mit einem kurzen sleep in ein bashscript
#!/bin/bash
echo ‚1-4‘ > /sys/bus/usb/drivers/usb/unbind
sleep 3
echo ‚1-4‘ > /sys/bus/usb/drivers/usb/bind
Damit ich es immer erreiche, hab ich mir einen Link mit gksu ins Startmenü Whiskermenü gelegt.
Update:
Suspend/Wakeup script
Natürlich ist mir das Aufrufen des Scripts zum Reaktivieren des Modems sehr schnell auf die Nerven gegangen. Viel komfortabler ist es doch, einfach das Modem vorm Suspend abzuschalten und beim Aufwachen es wieder einzubinden. Sowas geht unter Ubuntu ganz einfach mit systemd. Natürlich habe ich nicht erst manpages dazu gewälzt: googlen brachte Just another Linux geek ans Licht. Man muss offenbar nichts weiter tun, als ein Script an die richtige Stelle zu legen. Für Ubuntu ist die Stelle /usr/lib/systemd/system-sleep/
, systemd führt einfach alles darin aus, wenn das System in den Sleep geschickt oder aufgeweckt wird. Dabei übergibt systemd „pre“ vorm Suspend und „post“ beim Aufwachen.
Mein Script heißt network
und muss natürlich ausführbar gemacht werden: chmod a+x ./network
. Drin steht folgendes:
#!/bin/bash
## Dieses scrip sorgt beim suspend für
## – korrektes abschalten/einschalten des Modems
if [ „${1}“ == „pre“ ]; then
# vorm suspend
/usr/bin/logger „turning off wwan radio“
/usr/bin/nmcli radio wwan off
echo ‚1-4‘ > /sys/bus/usb/drivers/usb/unbind
elif [ „${1}“ == „post“ ]; then
# nach dem suspend (aufwachen)
/usr/bin/logger „turning on wwan radio“
echo ‚1-4‘ > /sys/bus/usb/drivers/usb/bind
/usr/bin/nmcli radio wwan on
fi
Den nmcli habe ich noch dazu angestellt, damit der Networkmanager das Modem nicht einfach unterm Hintern weggeschossen bekommt. Yay! Mehr Komfort unter Linux!
(swg)
No comments