Hey, bitte registriere dich, um alle Funktionen nutzen zu können!

Mach's gut, CyanogenMod. Hallo LineageOS. ♥ Unsere Community freut sich auf die neue Ära.


Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[LineageOS] Kernel Module ftdi_sio.ko und usbserial.ko
#1
Hallo,

ich verwende ein gerootetes Galaxy S2 und will über den USB-Anschluss einen USB-RS232-Adapter anschliessen.
Ich greife auf das Gerät über ssh / WLAN zu.
Mittels dmesg bekomme ich angezeigt, dass das Gerät erkannt wird:

[18250.552739] c0 usb 2-1: new full speed USB device number 2 using s3c_otghcd
[18250.554119] c0 OTG root_hub_feature(548): case SetPortFeature -USB_PORT_FEAT_RESET
[18250.660177] c0 OTG compare_ed(384): update ed 8 (0x8)
[18250.690462] c0 usb 2-1: New USB device found, idVendor=0403, idProduct=6001
[18250.690521] c0 usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[18250.690580] c0 usb 2-1: Product: FT232R USB UART
[18250.690620] c0 usb 2-1: Manufacturer: FTDI
[18250.690654] c0 usb 2-1: SerialNumber: AH02GEDK

Gleiches mit lsusb

sudo lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 1519:0020
Bus 002 Device 001: ID 1d6b:0002
Bus 002 Device 002: ID 0403:6001 <<== FTDI-Adapter

Allerdings wird kein Device angelegt: /dev/ttyUSB0

Ich vermute, dass hierzu ein Kernel-Modull notwendig ist, das man mit insmod / modprobe laden kann.

Ich habe mir auch einen neuen Kernel gebaut und erwartete, dass man dann ein ladbares Modul erzeugen kann.

Allerdings habe ich weder einen Hinweis gefunden, wie man ein Modul generieren kann noch habe ich einen Hinweis gefunden, dass jemand bereits die Module ftdi_sio.ko und usbserial.ko erzeugt hat.

Vielleicht kann mir jemand weiterhelfen.

Viele Grüße
Antworten
#2
Ein Smartphone ist kein PC.
Android ist kein Desktop-Linux.

Du müsstest vermutlich nicht nur den Kernel selberbauen sondern das ganze LOS.
Wenn Du Dich da einarbeiten möchtest, wäre ein guter Anfang zu gucken wie das gemacht wird: LOS hat vergangenes Jahr den DIAG-Driver in den AOSP-Kernel eingebaut. Und da sieht man sowohl die erforderlichen Schritte als auch den Aufwand.

Alternativ gucke mal ob Magisk da eventuell passende Module anbietet?

So a la insmod .... im Terminal geht auf jeden Fall nicht.

Google Pixel 3 mit LOS17.1
Antworten
#3
Es geht:

~/android/lineage/kernel/samsung/smdk4412/arch/arm/configs
vi lineageos_i9100_defconfig

#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set NEW
CONFIG_USB_OTG=y

#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set NEW
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_FTDI_SIO=y
CONFIG_USB_SERIAL_PL2303=y

brunch i9100 2> /tmp/t2 1> /tmp/t1

Nach neuem Flashen / booten / rooten zeigt dmesg:

[ 1480.203857] c0 usb 2-1: New USB device found, idVendor=0403, idProduct=6001
[ 1480.204513] c0 usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1480.204708] c0 usb 2-1: Product: FT232R USB UART
[ 1480.204837] c0 usb 2-1: Manufacturer: FTDI
[ 1480.205062] c0 usb 2-1: SerialNumber: AH02GEDK
[ 1480.222423] c1 OTG compare_ed(384): update ed 8 (0x8)
[ 1480.223225] c1 OTG compare_ed(384): update ed 8 (0x8)
[ 1480.232489] c1 ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
[ 1480.244571] c1 usb 2-1: Detected FT232RL
[ 1480.244687] c1 usb 2-1: Number of endpoints 2
[ 1480.244795] c1 usb 2-1: Endpoint 1 MaxPacketSize 64
[ 1480.244923] c1 usb 2-1: Endpoint 2 MaxPacketSize 64
[ 1480.245762] c1 usb 2-1: Setting MaxPacketSize 64
[ 1480.246219] c1 OTG compare_ed(384): update ed 8 (0x8)
[ 1480.262917] c1 usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0

sudo ls -l /dev/ttyUSB0
crw------- 1 root root 188, 0 Mar 13 17:03 /dev/ttyUSB0

Ein Smartphone ist eben doch einfach nur ein Linux-Rechner - wenn man es will
Antworten
#4
Ja geil! Kernel selber bauen bringt schon was.
Ich sehe da aber trotzdem kein insmod/modprobe? ;o)



Google Pixel 3 mit LOS17.1
Antworten
#5
(14.03.2021, 13:31)llluuuzzziii schrieb: Ja geil! Kernel selber bauen bringt schon was.
Ich sehe da aber trotzdem kein insmod/modprobe? ;o)



Google Pixel 3 mit LOS17.1


Die Module (sie sind übrigens bereits alle vorhanden, da es sich um Standard-Module des Linux-Kernels handelt) werden direkt in den Kernel kompiliert, wenn man die Konfig-Datei

~/android/lineage/kernel/samsung/smdk4412/arch/arm/configs/lineageos_i9100_defconfig

um die von mir genannten Zeilen ergänzt.
Entsprechend benötigt man kein zusätzliches Laden eines externen Moduls, wenn man den USB/Seriell-Wandler in das Handy einsteckt.

Zumindest brauch ich jetzt keine RPi's mehr, da man externe Geräte ganz normal über /dev/ttyUSB0 ansprechen kann.

Es gibt sehr viele Module, die bereits für den Standard-Kernel vorbereitet sind, aber bei LineageOS nicht genutzt werden.
Allerdings muss man aufpassen, was man tut.
Ich hatte einige Probleme den Kernel mit Zusatzmodulen bei einem Nexus5 zu kompilieren - jetzt hat es aber auch geklappt.
Antworten
#6
Was hängt bei Dir an der RS232 dran?

Google Pixel 3 mit LOS17.1
Antworten
#7
(15.03.2021, 00:40)llluuuzzziii schrieb: Was hängt bei Dir an der RS232 dran?

Google Pixel 3 mit LOS17.1

Für mich war es erst einmal Spielerei, da ich vermutete, dass es gehen muss, aber nicht klar war, wie es geht.
Ich habe (neben ein paar PIs) einen G4 in der Gartenhütte angeschlossen an eine Wetterstation - macht zusätzlich alle 1h ein Foto.

Beruflich betreiben wir ein Messnetz in D mit viel Hardware um einen selbst entwickelten Linux-Datalogger.
Das läuft 24/7 und muss funktionieren.
Ich werde einmal einen Feldversuch starten und unsere Anwendung auf einem S2 oder S4 prototypisch (mindestens 1a) laufen lassen, um Erfahrungen zu sammeln.
Die Detektoren werden über den USB-Port angesteuert - alles ein bisschen kompakter und billiger als bisher.
Aber das Ganze ist erst einmal nur ein proof-of-concept.
Antworten
#8
Ich sehe das von der technischen Seite her als - interessant!
Falls du zu irgend einem Ergebnis kommst - interessant!

Ich wünsche viel Erfolg.
Antworten
#9
(15.03.2021, 13:51)db91595 schrieb: Ich sehe das von der technischen Seite her als - interessant!
Falls du zu irgend einem Ergebnis kommst - interessant!

Ich wünsche viel Erfolg.


Vielen Dank,

auf jeden Fall bin ich der LineageOS-Community dankbar für die gute Arbeit.

Wenn Du Einfluss nehmen könntest (es gibt auch Projekte wie octoprint (3D Drucker)), die auf eine Lösung mit USB-seriell-Konvertern bei LineageOS warten:

wenn man künftig die drei Zeilen:
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_FTDI_SIO=y
CONFIG_USB_SERIAL_PL2303=y
in dem File arc/arm/configs/lineageos_SYSTEM_defconfig.mk (SYSTEM= das jeweilige Gerät) eintragen würde, wären dieses Konverter für ALLE ohne aufwendiges Neukompilieren verfügbar (natürlich ist es notwendig, sein Gerät zu rooten). 

Bei dem Galaxy S4 (LOS 17.1) sind z.B. die beiden Zeilen bereits eingetragen:
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_PL2303=y
d.h.: wer Interesse hat sollte dies bei einem gerooteten Galaxy-S4 (LOS 17.1) sofort ausprobieren können.
Antworten
#10
Klingt sehr interessant. Das ist dann letztlich eine Art Umweltdaten-Logger?
Na dann toitoitoi

Google Pixel 3 mit LOS17.1
Antworten



Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste