#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

OpenWrt & GL-X750-Router: USB-Port inkl. automatisches Einhängen für USB-Stick einrichten

Den USB-Port meines 4G-/LTE-Routers (GL-X750) hatte ich bisher nie benötigt. Vor Kurzem wollte ich ihn nun aber doch mal verwenden und einen USB-Speicherstick darüber einhängen. Leider war die Einrichtung nicht so trivial wie gedacht, da im Gegensatz zum angepassten Hersteller-OpenWrt, bei meinem verwendeten Stock-OpenWrt der USB-Port nicht mit Strom versorgt wurde. Wie ich das Ganze letztendlich zum Laufen bekommen habe und wie ich das automatische Einhängen meines USB-Sticks umgesetzt habe, gibt es in diesem Beitrag zu lesen.

Folgende Hardware bzw. Software wurde verwendet:
  • Spitz 4G LTE Smart Router - GL-X750C6
  • OpenWrt v21.02.2

USB-Port einrichten

USB-Treiber/-Pakete installieren

Da ich den USB-Port bisher nie verwendet hatte, musste ich im ersten Schritt erst einmal die benötigten Treiber bzw. Pakete installieren. Orientiert habe ich mich dabei an dem OpenWrt-Wiki-Eintrag Using storage devices. Unter Berücksichtigung, dass der USB-Port des GL-X750 nur USB 2.0 unterstützt, mein USB-Stick als Dateisystem ext4 verwendet und der Speichertyp Bulk only Transport ist, reichte es folgende Pakete zu installieren:

opkg update
opkg install kmod-usb2 kmod-usb-storage kmod-fs-ext4 block-mount
Terminal / Konsole

GPIO-Pin für USB-Port-Stromversorgung aktivieren

In der Theorie sollte der USB-Stick nun von OpenWrt bspw. mit dem Befehl block info erkannt werden. In meinem Fall war das leider nicht der Fall. Nach langem Rumprobieren habe ich dann mithilfe eines alten USB-Sticks, der eine Status-LED hat, festgestellt, dass der USB-Port offenbar keinen bzw. nicht ausreichend Strom liefert, da die LED nicht aufleuchtete. Nach kurzer Suche bin ich dann im OpenWrt-Forum fündig geworden und habe eine Lösung gefunden. Im konkreten Fall muss man erst den GPIO-Pin 2 aktivieren bzw. entsprechend schalten. Das kann wie folgt erfolgen:

echo 2 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio2/direction
Terminal / Konsole

Danach wurde mein USB-Stick dann auch von OpenWrt problemlos erkannt:

block info
[...]
/dev/sdb1: UUID="d8087780-7b03-4a2e-ba94-7fe82de04d31" LABEL="64GB-Stick" VERSION="1.0" TYPE="ext4"
Terminal / Konsole
Hinweis GPIO-Pin-Schaltung persistieren

Nach einem Neustart des Routers muss der GPIO-Pin jedes mal erneut entsprechend geschaltet werden. Um das nicht manuell jedes mal machen zu müssen, kann man die zwei echo-Befehle z.B. auch in die /etc/rc.local einfügen, so dass sie automatisch beim Starten von OpenWrt ausgeführt werden.

USB-Stick einhängen & Auto-Mount einrichten

Das Einhängen sowie das Einrichten des automatischen Einhängens des USB-Sticks könnte man nun auch direkt im Terminal machen, aber ich habe es einfachhalber über die Weboberfläche LuCI eingerichtet. Hier ist der Menüpunkt System - Mount Points zu wählen. Im Abschnitt Mount Points klickt ihr auf Add und wählt den einzuhängenden USB-Stick sowie das Verzeichnis, in dem der USB-Stick eingehängt wird, aus:

OpenWrt: Mount-Point für USB-Stick einrichten

Damit der USB-Stick direkt beim Einstecken bzw. beim Booten automatisch eingehängt wird, ist die Checkbox Enabled zu aktivieren. Unter dem Reiter Advanced Settings lassen sich bei Bedarf noch weitere Mount-Optionen setzen und das Dateisystem des USB-Sticks, bei mir z.B. ext4, festlegen.

OpenWrt: Mount-Point für USB-Stick einrichten - erweiterte Einstellungen

Klickt abschließend auf Save und dann auf Save & Apply, um die Änderung zu speichern und anzuwenden. Anschließend sollte euer USB-Stick eingehängt sein:

OpenWrt: Mount-Point für USB-Stick einrichten - Status bzw. Übrssicht

Fazit

Abgesehen von dem Fallstrick mit der Stromversorgung des USB-Ports, ist das Einhängen von USB-Speichermedien unter OpenWrt dank Weboberfläche leicht umzusetzen.