Debugging: Mein Banana Pi BPI-M6 will nicht von SD Karte booten

Den neu auf den Markt gekommenen Banana Pi BPI-M6 hatte ich ja schon in diesem Artikel vorgestellt und bin auf dessen Hardware-Features Im Vergleich mit denen des Raspberry Pi 5 eingegangen.

Danach habe ich die Android Tablet Firmware ins eMMC hochgeladen und es getestet und die Temperaturen dabei gemessen.

Das Android Image war für den Anfang vielleicht als Demo ganz interessant, aber so richtig viel ließ sich damit nicht anstellen. Voller Sehnsucht wartete ich also auf ein Linux-Image, das mir wesentlich mehr Freiheiten geben sollte.

Endlich kam dann das Image 2023-12-18-ubuntu-20.04-mate-desktop-vpu-npu-bpi-m6-aarch64-sd.img heraus, das ein Ubuntu Linux mit Unterstützung des BPI-M6 VPU und NPU mitbringen sollte. Diesmal handelte es sich um ein Image, das von der SD-Karte gebootet werden würde.

Ubuntu Linux Image auf SD-Karte flashen


Zuallererst muss das heruntergeladene 2023-12-18-ubuntu-20.04-mate-desktop-vpu-npu-bpi-m6-aarch64-sd.img.xz entpackt werden. Das geht mit WinRar oder 7zip. Wir erhalten dann das wesentlich größere 2023-12-18-ubuntu-20.04-mate-desktop-vpu-npu-bpi-m6-aarch64-sd.img mit ca. 7.5 GB, welches das eigentliche Image für die SD-Karte ist. Daraus folgt, dass wir mindestens eine µSD Karte mit 8 GB, besser mit 16 GB oder mehr benötigen.

Um das Image auf eine SD-Karte zu flashen, habe ich das altbewährte Etcher hergenommen, mit dem ich auch schon meine erste Boot-SD für den Raspberry Pi geflasht habe. Eine Anleitung, wie man mit Etcher eine SD Karte beschreibt, findet ihr unter dem Link im Abschnitt Image laden und flashen / Etcher. Es ist aber eigentlich ganz einfach: SD-Karte rein, Etcher laden, SD Karte und Image auswählen, "Flash!" anklicken. Und schon ist das Image auf der SD-Karte.

Dann habe ich für alle Fälle, damit dem Booten von SD Karte nichts im Weg steht, das eMMC Image von meinem BPI-M6 gelöscht. Dazu musste ich wieder meinen alten Toshiba Laptop rausholen, aber im Prinzip ist das auch ganz einfach: BPI-M6 an einen USB des PC anstöpseln und danach USB halten, während man den Reset-Knopf drückt (RST). Dann zuerst den Resetknopf loslassen, den USB-Knopf noch halten und dann auch den USB-Knopf loslassen. Schwupps, befindet sich der BPI-M6 im Flash-Modus und wird durch das SOC System Tool gefunden. Eine genaue Anleitung zu dem Tool gibt es in meinem Artikel Banana Pi BPI-M6: Ersteinrichtung und Hochladen eines Images


Jetzt nur noch den "Erase"-Button links klicken und das eMMC wird gelöscht. Danach bekommt man beim Booten des BPI-M6 ohne SD Karte nur noch einen schwarzen Bildschirm, es ist ja kein bootbares Image mehr vorhanden.

Es funktioniert übrigens nicht zu versuchen, ein SD-Karten-Image (erkennbar an dem "-sd" vor dem ".img" im Dateinamen) in das eMMC zu flashen. Das ergibt nur eine Fehlermeldung, dass der Pfad ungültig ist ("eMMC: the path is invalid, please change file path").

Erster Test des neuen Ubuntu Linux Images

Der Getting Started-Anleitung auf banana-pi.org ist zu entnehmen, das man den SPI-Button (siehe Foto oben) drücken und halten muss, wenn man von SD-Karte booten will. Ich hatte ja bisher angenommen, dass dieser für die Debug-Ausgabe zuständig sein, aber dem ist nicht so. Die Debug-Ausgabe erfolgt immer über das serielle Interface, aber dazu gleich mehr.

Ich finde die Beschriftung des Buttons ein wenig verwirrend, auch sind diese nicht gut dokumentiert. Der USB-Button sollte eigentlich "FLSH" oder so heißen, weil hier in den Flash-Modus für das SOC-Tool gegangen wird. Und der SPI-Button sollte eigentlich mit "SD" beschriftet sein, weil, wenn gedrückt, von SD gebootet wird. Für den Modus "von eMMC booten" gibt es keinen extra Knopf, das ist Default-Verhalten.

Ich halte also den SPI-Button gedrückt, drücke kurz Reset und lasse SPI wieder los, doch nichts tut sich - kein Booten von SD. Der Bildschirm, der über HDMI-out angeschlossen ist, bleibt schwarz. Ich wende mich an den Support bei Banana Pi. Der rät mir dazu, das HDMI-Kabel auszustecken und keinen Reset durchzuführen, sondern beim Einstecken des USB-Kabels den SPI gedrückt zu halten.

Angeblich wegen irgendwelchem rückgeführten Strom. Das hört sich ziemlich schräg für mich an, denn eigentlich sollte die CPU beim Einschalten oder Reset in der Reset-Routine checken, ob der Tasten SPI durch drücken auf Low gezogen ist und dementsprechend agieren. Ob da ein HDMI-Kabel angesteckt ist oder schon Strom da ist, sollte sowas von egal sein. Das Prinzip der CPU-Boot-Routine war schon bei der über 40 Jahren alten 6502-CPU so: CPU bekommt Reset (durch Pegelwechsel an Reset-Pin oder Stromzufuhr) und führt dann den Maschinencode aus, der hinterlegt ist.

Aber sei's drum. Probieren schadet ja nichts. Natürlich blieb wie erwartet der Bildschirm schwarz, egal, ob mit HDMI-Kabel, Reset oder frisch mit Strom versorgt.

Ich probiere dann außer der bisher versuchten Lexar-µSD mit 32 GB nun auch eine Marken-µSD von Samsung mit 128 GB, auf die mit Etcher das Image brenne. Selbes Ergebnis: Nichts, schwarzer Bildschirm. Dann versuche ich nochmal ein anderes Images, nämlich das 2023-12-17-ubuntu-20.04-mate-desktop-vpu-bpi-m6-aarch64-sd.img. Gleiches Ergebnis: nichts tut sich, kein Boot-Aktivität, grüne LED bleibt aus, nur schwarzer Bildschirm.

Zeit, zu debuggen




Um die Ursache für das Nicht-Booten herauszufinden, will ich ein paar mehr Informationen aus dem Banana Pi M6 herauskitzeln und schließe dafür meinen seriellen Adapter (auch FTDI-Adapter genannt) an, denn der BPI-M6 gibt über die serielle Schnittstelle Debug-Informationen aus.

Auf dem BPI-M6-Board gibt es nahe der äußersten USB-Buchse einen drei-poligen Header mit der Bezeichnung "G RX TX". Das steht für "Ground, Receive, Transmit" und ist das serielles UART-Interface für die Debug-Infos. Beim Booten und auch sonst werden dort Informationen, vornehmlich für Debug-Zwecke ausgegeben. Das kennen wir ja schon von der Programmierung vom Arduino und dem Serial Monitor dort.

Es dürfte vielleicht den einen oder anderen verwirren, dass es keine Leitung für die Spannungsversorgung für diesen seriellen Port auf dem BPI-M6 gibt. Diese ist aber gar nicht über extern nötig, denn der BPI-M6 hat ja seine eigene Spannungsversorgung. Darum müssen wir nur drei Kabel anschließen: BPI-M6 FTDI-Adapter G GND RX TX TX RX

Das andere Ende, den USB-Stecker stecken wir in einen freien USB-Port in unserem PC. Hardwaretechnisch ist die Verbindung damit vorhanden. Beim Einschalten schickt der der M6 jetzt Meldungen über diese serielle Verbindung. Fehlt noch etwas, um die Meldungen auf dem PC anzuzeigen. Es muss noch nicht einmal ein PC sein, es kann zum Beispiel auch ein zweiter Pi mit Display sein, wie in diesem Projekt vorgestellt. Bleiben wir der Einfachheit halber aber beim PC.


Dort starten wir ein Terminalprogramm, das kann zum Beispiel Putty sein, dass die meisten schon haben. Ausgewachsene Terminalprogramme wie TeraTerm und Co. haben noch ein wenig mehr Komfort und Einstellmöglichkeiten. Und eingestellt werden muss: 1. Der richtige COM-Port auf den PC, den wir gegebenenfalls durch den Gerätemanager erfahren. 2. Die Übertragungsparameter. Diese sind für den BMP-M6: 115200 bps, 8N1, Flusskontrolle XON/XOFF.

Als das erledigt ist, boote ich den Banana Pi neu von SD-Karte: ich drücke und halte den SPI-Taster und drücke dann kurz nochmal Reset. Solange ich den SPI Button halte, versucht der M6 von SD zu booten. Schlägt das fehl, versucht er erneut von SD zu booten. Das geht solange, wie ich die SPI-Taste drücke.

Lasse ich ihn los und hat der M6 noch nicht von SD gebootet, fällt er in sein Default-Verhalten zurück und versucht dann von eMMC zu booten. Ist das eMMC leer und gibt es auch dort nichts zu booten, dann gibt es nur einen schwarzen Bildschirm.

Kein Anschluss unter dem Port SD oder I2C

Mit dem SD-Image 2023-12-18 bekomme ich folgendes Debug-Log über die serielle Schnittstellen, wenn ich von SD boote (SPI gedrückt):
bg7 a0 erom: release id 0x6ffcd41, commit time Fri Aug 12 02:07:49 2022 -0700 bg7 a0 hal : release id 0x731c206, commit time Tue Nov 15 21:29:55 2022 -0800 Enter PI Command Loop... build-in module: release id 0x64ca76b, commit time Wed Nov 2 02:06:34 2022 -0700 Load sysinit Start ACPU init cpupll 400MHz init mempll 3733MHz init 4GB DDR, lib version r68332 DDR type is LPDDR4X, load LPDDR4X table. DHL:v0p93 PT:v0p93 ID:0x23 asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. hw_init done custom table done asking BCM to load miniloader. try to verify flash miniloader init syspll 800MHz Miniloadebr:cm _tzex ltno:ad rerel!e sFe inidi sh0xed39 etobf l94o,ad c BomCmM itke trinemel! F ri RAKEuKg _1ID2 0(1by:t44e:[03:6 72])0 22= 0-007000000 0000000000 ULT (byte[0:7]) = 43111a826e719115 Chip version = 0x01 Leakage ID = 1705 i2c status:0x00000750, send_num:1 (expect:1), recv_num:0 (expect:1) tx abort source:0x801000 bit12:lost arbitration MMC is SD dwcmshc_send_cmd, wait command 0 complete time out!
Die meines Erachtens wichtigen Zeilen, die etwas mit dem Booten von SD Karte zu tun haben, habe ich mal gelb markiert. Die Zeile i2c status:0x00000750, send_num:1 (expect:1), recv_num:0 (expect:1) lässt darauf schließen, dass der I2C-Bus nicht funktioniert. Es wurde 1 Byte losgeschickt (send_num:1 (expect:1)), aber es kam keine an bzw. zurück (recv_num:0 (expect:1)). Irgendwo ist also was mit der I2C-Kommunikation schief gegangen. Und ich schätze, die ist nötig, um überhaupt mit der SD-Karte zu kommunizieren.

Die Zeile "dwcmshc_send_cmd, wait command 0 complete time out!" sagt aus, dass ein Kommando an die SD-Karte geschickt wurde (vielleicht ein Dir-Befehl), aber nicht ankam bzw. es keine Rückmeldung darüber gab, dass er angekommen ist.

Der Begriff dwcmshc lässt darauf schließen, dass es sich um ein SD-Card-Kommando handelt, denn dieser Begriff findet sich so in einigen Sourcen zur SD-Karten-Kommunikation wieder, zum Beispiel diesem hier:
// SPDX-License-Identifier: GPL-2.0 /* * Driver for Synopsys DesignWare Cores Mobile Storage Host Controller * * Copyright (C) 2018 Synaptics Incorporated * * Author: Jisheng Zhang */ ... static void Synaptics_request(struct mmc_host *mmc, struct mmc_request *mrq) { dwcmshc_check_auto_cmd23(mmc, mrq); sdhci_request(mmc, mrq); }
Wie man sieht, stammt der Sourcecode sogar vom Hersteller des SoCs auf dem BPI-M6, dem Synaptics VideoSmart VS680 SoC. Gut möglich, dass dieser oder ein ganz ähnlicher auch beim BPI-M6 zum Einsatz kommt. SDHCI steht dabei für "Secure Digital Host Controller Interface Driver", also den Treiber für den Zugriff auf SD-Karten.

Ergo: Irgendwas ist wohl an meinem Board defekt, das die Kommunikation mit dem I2C-Bus und der SD-Karte unmöglich macht. Da technisch kein Zugriff auf die SD Karte möglich ist, kann natürlich auch nicht von dieser gebootet werden. Das Android-Image konnte nur booten, weil es auf eMMC und nicht auf SD vorliegt.

Normalerweise sind SD-Karten ja via SPI-Interface angebunden und nicht via I2C-Interface, ganz einfach, weil SPI schneller ist. Eventuell ist das beim BPI-M6 ja anders und er gebraucht I2C zur Kommunikation mit der SD? Das würde das Fehlverhalten erklären. Eventuell ist aber auch beides defekt: I2C und SD-Interface. Die Frage ob I2C oder SPI für die SD verwendet wird, habe ich auch dem Support gestellt. Zusammen mit meiner Diagnose und den Debug-Logs. Die Frage wurde allerdings nicht beantwortet.

Um noch genauere Informationen über die Fehler auf dem I2C Bus zu bekommen, habe ich noch einmal das Android Image in das eMMC geflasht und dort die UART Debug Logs mitlaufen lassen.

gesamtes Terminal-Log für Interessierte (klicken, um diesen Abschnitt auf- und zuzuklappen)
bg7 a0 erom: release id 0x6ffcd41, commit time Fri Aug 12 02:07:49 2022 -0700 bg7 a0 hal : release id 0x731c206, commit time Tue Nov 15 21:29:55 2022 -0800 Enter PI Command Loop... build-in module: release id 0x64ca76b, commit time Wed Nov 2 02:06:34 2022 -0700 Load sysinit Start ACPU init cpupll 400MHz init mempll 3733MHz init 4GB DDR, lib version r68332 DDR type is LPDDR4X, load LPDDR4X table. DHL:v0p93 PT:v0p93 ID:0x23 asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. asking BCM to load ddr phy fw. DDR PHY firmware loading is done. hw_init done custom table done asking BCM to load miniloader. try to verify flash miniloader init syspll 800MHz Flow updabctmed_e: xttnz : lorealdeear,se eMidMC 0 xbo39oteb!f 94RK, EcK_omIDmi t(b tytimee[0 F:7ri] ) Au= g 01002 00010:004400:30600 2000202 U-0LT70 0(b yte[0:7]) = 43111a826e719115 Chip version = 0x01 Leakage ID = 1705 Check bootmode = 0x0 ! Check slot index = 0x0 ! VS680: bm_verify_image, cmd:0x1006, 0x4,0x160000,0x1000000,0x160000,0xbfea4,0x1 ! VS680: bm_verify_image, cmd:0x1006, 0x4,0x120000,0x1000000,0x120000,0xbfea4,0x1 ! load_tzk_boot_param to address = 0x0, size = 0x1c00 . VS680: bm_verify_image, cmd:0x1006, 0x2,0x101000,0x1000000,0x101000,0xbfe94,0x1 ! load_tzk_oem_setting to address = 0x102c00, size = 0x2000 . VS680: bm_verify_image, cmd:0x1006, 0x5,0x4104000,0x1000000,0x4104000,0xbfee4,0x1 ! load slot a images successfully. Image Load done with bootmode=0x0, slot=a ! Bootloader paramater to address 0x4100000 [binärer, unlesbarer Output] [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd090] [ 0.000000] Linux version 5.4.210+ (bananapi@b652de436621) (Android (7485623, based on r416183b1) clang version 12.0.7 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.7 (/buildbot/src/android/llvm-r416183/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Wed Aug 30 20:15:10 CST 2023 [ 0.000000] Machine model: Synaptics VS680 EVK [ 0.000000] cma: Reserved 500 MiB at 0x000000004a400000 [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv1.1 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: Trusted OS migration not required [ 0.000000] psci: SMC Calling Convention v1.0 [ 0.000000] Load bootconfig: 745 bytes 42 nodes [ 0.000000] percpu: Embedded 35 pages/cpu s103320 r8192 d31848 u143360 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: detected: ARM erratum 858921 [ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration [ 0.000000] CPU features: detected: Spectre-BHB [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 802872 [ 0.000000] Kernel command line: console=ttyS0,115200 init=/init root=/dev/ram0 firmware_class.path=/vendor/firmware loop.max_part=7 bootconfig buildvariant=userdebug chipid=43111a826e719115 cma=524288000@1245708288 [ 0.000000] [avio] cmdline:androidboot.quiescent=0 [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear) [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 2635312K/3262464K available (13756K kernel code, 1230K rwdata, 9624K rodata, 1152K init, 731K bss, 115152K reserved, 512000K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] rcu: RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] rcu: Offload RCU callbacks from CPUs: (none). [ 0.000000] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____) [ 0.000000] arch_timer: Enabling local workaround for ARM erratum 858921 [ 0.000000] arch_timer: CPU0: Trapping CNTVCT access [ 0.000000] arch_timer: cp15 timer(s) running at 25.00MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns [ 0.000002] sched_clock: 56 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns [ 0.000191] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=250000) [ 0.000196] pid_max: default: 32768 minimum: 301 [ 0.000346] LSM: Security Framework initializing [ 0.000375] SELinux: Initializing. [ 0.000514] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) [ 0.000524] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) [ 0.001301] ASID allocator initialised with 65536 entries [ 0.001335] rcu: Hierarchical SRCU implementation. [ 0.001627] smp: Bringing up secondary CPUs ... [ 0.002034] Detected VIPT I-cache on CPU1 [ 0.002049] arch_timer: Enabling local workaround for ARM erratum 858921 [ 0.002057] arch_timer: CPU1: Trapping CNTVCT access [ 0.002064] CPU1: Booted secondary processor 0x0000000001 [0x411fd090] [ 0.002490] Detected VIPT I-cache on CPU2 [ 0.002498] arch_timer: Enabling local workaround for ARM erratum 858921 [ 0.002502] arch_timer: CPU2: Trapping CNTVCT access [ 0.002506] CPU2: Booted secondary processor 0x0000000002 [0x411fd090] [ 0.002921] Detected VIPT I-cache on CPU3 [ 0.002928] arch_timer: Enabling local workaround for ARM erratum 858921 [ 0.002931] arch_timer: CPU3: Trapping CNTVCT access [ 0.002935] CPU3: Booted secondary processor 0x0000000003 [0x411fd090] [ 0.002966] smp: Brought up 1 node, 4 CPUs [ 0.002977] SMP: Total of 4 processors activated. [ 0.002980] CPU features: detected: 32-bit EL0 Support [ 0.002982] CPU features: detected: CRC32 instructions [ 0.005044] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching [ 0.005047] CPU: All CPU(s) started at EL2 [ 0.005057] alternatives: patching kernel code [ 0.005250] CPU3: update max cpu_capacity 1024 [ 0.008071] Registered cp15_barrier emulation handler [ 0.008079] Registered setend emulation handler [ 0.008193] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.008199] futex hash table entries: 1024 (order: 4, 65536 bytes, linear) [ 0.012085] CPU1: update max cpu_capacity 1024 [ 0.012997] xor: measuring software checksum speed [ 0.110055] 8regs : 6326.400 MB/sec [ 0.210056] 32regs : 7042.400 MB/sec [ 0.310082] arm64_neon: 5600.000 MB/sec [ 0.310085] xor: using function: 32regs (7042.400 MB/sec) [ 0.310092] pinctrl core: initialized pinctrl subsystem [ 0.310653] NET: Registered protocol family 16 [ 0.311331] DMA: preallocated 256 KiB pool for atomic allocations [ 0.311349] audit: initializing netlink subsys (disabled) [ 0.311411] audit: type=2000 audit(0.310:1): state=initialized audit_enabled=0 res=1 [ 0.311559] cpuidle: using governor teo [ 0.311607] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.311985] pstore: Registered ramoops as persistent store backend [ 0.311988] ramoops: using 0x4000@0xf901c000, ecc: 0 [ 0.322320] cryptomgr_test (38) used greatest stack depth: 14360 bytes left [ 0.322781] cryptd: max_cpu_qlen set to 1000 [ 0.325540] gpio-dwapb f7fc8000.gpio: no irq for port0 [ 0.326190] SCSI subsystem initialized [ 0.326257] usbcore: registered new interface driver usbfs [ 0.326272] usbcore: registered new interface driver hub [ 0.326289] usbcore: registered new device driver usb [ 0.329923] gpio-394 (gpioi2c3): enforced open drain please flag it properly in DT/ACPI DSDT/board file [ 0.329943] gpio-393 (gpioi2c3): enforced open drain please flag it properly in DT/ACPI DSDT/board file [ 0.329975] i2c-gpio gpioi2c3: using lines 394 (SDA) and 393 (SCL) [ 0.332015] videodev: Linux video capture interface: v2.00 [ 0.332212] Advanced Linux Sound Architecture Driver Initialized. [ 0.332424] Bluetooth: Core ver 2.22 [ 0.332440] NET: Registered protocol family 31 [ 0.332443] Bluetooth: HCI device and connection manager initialized [ 0.332447] Bluetooth: HCI socket layer initialized [ 0.332450] Bluetooth: L2CAP socket layer initialized [ 0.332616] clocksource: Switched to clocksource arch_sys_counter [ 0.363066] VFS: Disk quotas dquot_6.6.0 [ 0.363102] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.363344] thermal_sys: Registered thermal governor 'step_wise' [ 0.363449] NET: Registered protocol family 2 [ 0.363559] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.364521] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear) [ 0.364555] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear) [ 0.364643] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear) [ 0.364861] TCP: Hash tables configured (established 32768 bind 32768) [ 0.364916] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear) [ 0.364957] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear) [ 0.365061] NET: Registered protocol family 1 [ 0.365242] cryptomgr_test (39): highest shadow stack usage: 104 bytes [ 0.365522] Trying to unpack rootfs image as initramfs... [ 0.372663] cryptomgr_test (38): highest shadow stack usage: 112 bytes [ 0.426933] Freeing initrd memory: 19732K [ 0.427516] hw perfevents: enabled with armv8_cortex_a73 PMU driver, 7 counters available [ 0.429199] Initialise system trusted keyrings [ 0.429269] workingset: timestamp_bits=46 max_order=20 bucket_order=0 [ 0.433332] ntfs: driver 2.1.32 [Flags: R/O]. [ 0.433537] fuse: init (API version 7.31) [ 0.450062] Key type asymmetric registered [ 0.450067] Asymmetric key parser 'x509' registered [ 0.450083] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251) [ 0.450086] io scheduler mq-deadline registered [ 0.450173] io scheduler bfq registered [ 0.452548] berlin-pcie f7e40000.pcie: host bridge /soc/pcie@f7e40000 ranges: [ 0.452555] berlin-pcie f7e40000.pcie: No bus range found for /soc/pcie@f7e40000, using [bus 00-ff] [ 0.452568] berlin-pcie f7e40000.pcie: IO 0xe0800000..0xe0ffffff -> 0x00000000 [ 0.452575] berlin-pcie f7e40000.pcie: MEM 0xe1000000..0xe7ffffff -> 0xe1000000 [ 0.602635] phy phy-f7e4a02c.phy.0: PCIe PLL is locked. [ 1.842727] berlin-pcie f7e40000.pcie: Phy link never came up [ 1.842796] berlin-pcie f7e40000.pcie: PCI host bridge to bus 0000:00 [ 1.842801] pci_bus 0000:00: root bus resource [bus 00-ff] [ 1.842804] pci_bus 0000:00: root bus resource [io 0x0000-0x7fffff] [ 1.842807] pci_bus 0000:00: root bus resource [mem 0xe1000000-0xe7ffffff] [ 1.842821] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400 [ 1.842837] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref] [ 1.842863] pci 0000:00:00.0: supports D1 D2 [ 1.842866] pci 0000:00:00.0: PME# supported from D0 D1 D3hot [ 1.844453] pci 0000:00:00.0: BAR 6: assigned [mem 0xe1000000-0xe100ffff pref] [ 1.844458] pci 0000:00:00.0: PCI bridge to [bus 01-ff] [ 1.844576] pcieport 0000:00:00.0: PME: Signaling with IRQ 156 [ 1.844783] pwm-backlight panel0-backlight: panel0-backlight supply power not found, using dummy regulator [ 1.846344] syna-isp f9100000.isp: Initialization complete [ 1.846451] syna-isp f9100000.isp: [ispcore] ISP Core Sub Module intitalized [ 1.846455] syna-isp f9100000.isp: [ispcore] isp_core_mod_probe:277: probe Done [ 1.846458] syna-isp f9100000.isp: ISP_DRV:probe Done! [ 1.846468] syna-isp f9100000.isp: [ispdhub] isp_drv_dhub_config:60: irq - isp_tsb_dhub:37 [ 1.846472] syna-isp f9100000.isp: [ispdhub] isp_drv_dhub_config:70: ISP base : (____ptrval____) [ 1.846477] syna-isp f9100000.isp: [ispdhub] isp_dhub_mod_probe:788: probe Done [ 1.846480] syna-isp f9100000.isp: ISP DHUB:probe Done! [ 1.846582] syna-axi-meter f7940000.axi_meter: axi meter start [ 1.846775] VPP_ModuleInit:Normal mode, ta_flag:0 [ 1.846822] vpp : register successful, mode: NORMAL [ 1.847278] sy8827n-regulator 1-0060: No cache defaults, reading back from HW [ 1.847553] vcpu: supplied by regulator-dummy [ 1.847918] sy8827n-regulator 2-0060: No cache defaults, reading back from HW [ 1.848215] vcore: supplied by regulator-dummy [ 1.848360] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 1.848762] f7e81000.uart: ttyS2 at MMIO 0xf7e81000 (irq = 47, base_baud = 12500000) is a 16550A [ 1.848904] f7fcd000.uart: ttyS0 at MMIO 0xf7fcd000 (irq = 53, base_baud = 1562500) is a 16550A [ 2.866495] printk: console [ttyS0] enabled [ 2.873343] brd: module loaded [ 2.882269] loop: module loaded [ 2.885599] zram: Added device: zram0 [ 2.889841] tun: Universal TUN/TAP device driver, 1.6 [ 2.895127] stmmaceth f7b60000.ethernet: IRQ eth_wake_irq not found [ 2.901393] stmmaceth f7b60000.ethernet: IRQ eth_lpi not found [ 2.907276] stmmaceth f7b60000.ethernet: PTP uses main clock [ 2.912938] stmmaceth f7b60000.ethernet: no reset control found [ 2.918937] stmmaceth f7b60000.ethernet: User ID: 0x10, Synopsys ID: 0x37 [ 2.925732] stmmaceth f7b60000.ethernet: DWMAC1000 [ 2.930609] stmmaceth f7b60000.ethernet: DMA HW capability register supported [ 2.937756] stmmaceth f7b60000.ethernet: RX Checksum Offload Engine supported [ 2.944892] stmmaceth f7b60000.ethernet: COE Type 2 [ 2.949768] stmmaceth f7b60000.ethernet: TX Checksum insertion supported [ 2.956471] stmmaceth f7b60000.ethernet: Normal descriptors [ 2.962041] stmmaceth f7b60000.ethernet: Ring mode enabled [ 2.967528] stmmaceth f7b60000.ethernet: Enable RX Mitigation via HW Watchdog Timer [ 3.073393] PPP generic driver version 2.4.2 [ 3.077699] PPP BSD Compression module registered [ 3.082404] PPP Deflate Compression module registered [ 3.087498] PPP MPPE Compression module registered [ 3.092280] NET: Registered protocol family 24 [ 3.096725] PPTP driver version 0.8.5 [ 3.100492] usbcore: registered new interface driver r8152 [ 3.105996] usbcore: registered new interface driver asix [ 3.111420] usbcore: registered new interface driver ax88179_178a [ 3.119121] dwc2 f7c00000.usb: f7c00000.usb supply vusb_d not found, using dummy regulator [ 3.127440] dwc2 f7c00000.usb: f7c00000.usb supply vusb_a not found, using dummy regulator [ 3.262648] dwc2 f7c00000.usb: EPs: 5, dedicated fifos, 4248 entries in SPRAM [ 3.269876] dwc2 f7c00000.usb: DWC OTG Controller [ 3.274592] dwc2 f7c00000.usb: new USB bus registered, assigned bus number 1 [ 3.281646] dwc2 f7c00000.usb: irq 43, io mem 0xf7c00000 [ 3.287020] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.04 [ 3.295286] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 3.302506] usb usb1: Product: DWC OTG Controller [ 3.307213] usb usb1: Manufacturer: Linux 5.4.210+ dwc2_hsotg [ 3.312960] usb usb1: SerialNumber: f7c00000.usb [ 3.317721] hub 1-0:1.0: USB hub found [ 3.321478] hub 1-0:1.0: 1 port detected [ 3.325727] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.332397] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller [ 3.337903] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2 [ 3.345929] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220fe64 hci version 0x110 quirks 0x0000000000010010 [ 3.355342] xhci-hcd xhci-hcd.0.auto: irq 157, io mem 0xf7d00000 [ 3.361472] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.04 [ 3.369738] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 3.376973] usb usb2: Product: xHCI Host Controller [ 3.381849] usb usb2: Manufacturer: Linux 5.4.210+ xhci-hcd [ 3.387423] usb usb2: SerialNumber: xhci-hcd.0.auto [ 3.392456] hub 2-0:1.0: USB hub found [ 3.396220] hub 2-0:1.0: 1 port detected [ 3.400249] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller [ 3.405741] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 3 [ 3.413407] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed [ 3.419958] usb usb3: We don't know the algorithms for LPM for this host, disabling LPM. [ 3.428106] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.04 [ 3.436373] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 3.443597] usb usb3: Product: xHCI Host Controller [ 3.448472] usb usb3: Manufacturer: Linux 5.4.210+ xhci-hcd [ 3.454051] usb usb3: SerialNumber: xhci-hcd.0.auto [ 3.459052] hub 3-0:1.0: USB hub found [ 3.462819] hub 3-0:1.0: 1 port detected [ 3.466951] usbcore: registered new interface driver uas [ 3.472292] usbcore: registered new interface driver usb-storage [ 3.478489] input: Infra-Red as /devices/virtual/input/input0 [ 3.484314] usbcore: registered new interface driver xpad [ 3.489726] usbcore: registered new interface driver usb_acecad [ 3.495688] usbcore: registered new interface driver aiptek [ 3.501270] usbcore: registered new interface driver gtco [ 3.506693] usbcore: registered new interface driver hanwang [ 3.512361] usbcore: registered new interface driver kbtab [ 3.517850] <<-GTP-INFO->> GTP driver installing... [ 3.522808] ouuu probe [ 3.525166] <<-GTP-INFO->> GTP Driver Version: V2.4<2014/11/28> [ 3.531082] <<-GTP-INFO->> GTP I2C Address: 0x5d [ 3.535813] <<-GTP-INFO->> ouuu gtp_int_gpio = 416 [ 3.540603] <<-GTP-INFO->> Guitar reset [ 3.682638] usb 2-1: new high-speed USB device number 2 using xhci-hcd [ 3.712789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 3.720962] <<-GTP-INFO->> Guitar reset [ 3.865653] usb 2-1: New USB device found, idVendor=2109, idProduct=2817, bcdDevice= 0.50 [ 3.873843] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 3.880976] usb 2-1: Product: USB2.0 Hub [ 3.886033] <<-GTP-ERROR->> GTP i2c test failed time 1. [ 3.891259] usb 2-1: Manufacturer: VIA Labs, Inc. [ 3.912789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 3.920963] <<-GTP-INFO->> Guitar reset [ 3.931994] hub 2-1:1.0: USB hub found [ 3.935894] hub 2-1:1.0: 4 ports detected [ 4.026644] usb 3-1: new SuperSpeed Gen 1 USB device number 2 using xhci-hcd [ 4.082619] <<-GTP-ERROR->> GTP i2c test failed time 2. [ 4.112794] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.121045] <<-GTP-INFO->> Guitar reset [ 4.126009] usb 3-1: New USB device found, idVendor=2109, idProduct=0817, bcdDevice= 0.50 [ 4.134190] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 4.141323] usb 3-1: Product: USB3.0 Hub [ 4.146377] usb 3-1: Manufacturer: VIA Labs, Inc. [ 4.171990] hub 3-1:1.0: USB hub found [ 4.175895] hub 3-1:1.0: 4 ports detected [ 4.282619] <<-GTP-ERROR->> GTP i2c test failed time 3. [ 4.312789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.320962] <<-GTP-INFO->> Guitar reset [ 4.482619] <<-GTP-ERROR->> GTP i2c test failed time 4. [ 4.512789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.520962] <<-GTP-INFO->> Guitar reset [ 4.682619] <<-GTP-ERROR->> GTP i2c test failed time 5. [ 4.712618] <<-GTP-ERROR->> I2C communication ERROR! [ 4.717751] <<-GTP-ERROR->> I2C Read: 0x8140, 6 bytes failed, errcode: -5! Process reset. [ 4.725928] <<-GTP-INFO->> Guitar reset [ 4.732620] usb 2-1.2: new full-speed USB device number 3 using xhci-hcd [ 4.882645] <<-GTP-ERROR->> GTP read version failed [ 4.887519] <<-GTP-ERROR->> Read version failed. [ 4.892306] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 4.900485] <<-GTP-INFO->> Guitar reset [ 4.914460] usb 2-1.2: New USB device found, idVendor=1915, idProduct=1025, bcdDevice= 1.00 [ 4.922816] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 4.930122] usb 2-1.2: Product: USB Composite Device [ 4.935096] usb 2-1.2: Manufacturer: XING WEI 2.4G USB [ 5.062791] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.070963] <<-GTP-INFO->> Guitar reset [ 5.232789] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.240961] <<-GTP-INFO->> Guitar reset [ 5.402789] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.410962] <<-GTP-INFO->> Guitar reset [ 5.572788] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.580961] <<-GTP-INFO->> Guitar reset [ 5.742789] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.750962] <<-GTP-INFO->> Guitar reset [ 5.912619] <<-GTP-ERROR->> I2C read 0x41E4, 1 bytes, double check failed! [ 5.919662] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 5.927840] <<-GTP-INFO->> Guitar reset [ 6.082789] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.090962] <<-GTP-INFO->> Guitar reset [ 6.252789] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.260961] <<-GTP-INFO->> Guitar reset [ 6.422788] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.430961] <<-GTP-INFO->> Guitar reset [ 6.592788] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.600960] <<-GTP-INFO->> Guitar reset [ 6.762788] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.770961] <<-GTP-INFO->> Guitar reset [ 6.932619] <<-GTP-ERROR->> I2C read 0x814A, 1 bytes, double check failed! [ 6.939491] <<-GTP-ERROR->> Failed to get sensor_id, No config sent! [ 6.945846] <<-GTP-ERROR->> GTP init panel failed. [ 6.950657] <<-GTP-INFO->> create proc entry gt9xx_config success [ 6.956810] input: goodix-ts as /devices/virtual/input/input1 [ 6.962585] <<-GTP-DEBUG->> [1749]INT trigger type:1, irq num = 124 [ 6.968879] <<-GTP-INFO->> GTP works in interrupt mode. [ 6.974109] <<-GTP-INFO->> Applied memory size:2562. [ 6.979070] <<-GTP-INFO->> I2C function: without pre and end cmd! [ 6.985168] <<-GTP-INFO->> Create proc entry success! [ 6.990263] ouuu init [ 6.992533] <<-GTP-INFO->> GTP driver ret = 0 [ 6.996946] i2c /dev entries driver [ 7.000640] usbcore: registered new interface driver uvcvideo [ 7.006388] USB Video Class driver (1.1.1) [ 7.010769] device-mapper: uevent: version 1.0.3 [ 7.015515] device-mapper: ioctl: 4.41.0-ioctl (2019-09-16) initialised: dm-devel@redhat.com [ 7.024103] rtk_btusb: RTKBT_RELEASE_NAME: 20230221_BT_ANDROID_12.0 [ 7.030367] rtk_btusb: Realtek Bluetooth USB driver module init, version 5.2.1 [ 7.037592] rtk_btusb: Register usb char device interface for BT driver [ 7.044261] usbcore: registered new interface driver rtk_btusb [ 7.050136] rfkill_bluetooth_probe: rfkill_bluetooth_probe [ 7.050136] [ 7.057148] get_dt_data: [BT] bt power gpio is 373 [ 7.062414] bluetooth_set_power: bluetooth_set_power: power down = 1 [ 7.062414] [ 7.080248] bluetooth_set_power: bluetooth_set_power: onoff = 1 [ 7.080248] [ 7.088223] sdhci: Secure Digital Host Controller Interface driver [ 7.094406] sdhci: Copyright(c) Pierre Ossman [ 7.098761] sdhci-pltfm: SDHCI platform and OF driver helper [ 7.135506] mmc0: SDHCI controller on f7aa0000.sdhci [f7aa0000.sdhci] using ADMA [ 7.172649] mmc1: SDHCI controller on f7ab0000.sdhci [f7ab0000.sdhci] using ADMA [ 7.180152] hidraw: raw HID events driver (C) Jiri Kosina [ 7.187549] input: XING WEI 2.4G USB USB Composite Device as /devices/platform/soc/soc:xhci@f7d00000/f7d00000.dwc3/xhci-hcd.0.auto/usb2/2-1/2-1.2/2-1.2:1.2/0003:1915:1025.0001/input/input2 [ 7.222621] sdhci-dwcmshc f7aa0000.sdhci: dll-calibration result: 47 [ 7.229982] sdhci-dwcmshc f7aa0000.sdhci: dll-calibration result: 41 [ 7.236444] mmc0: new HS400 MMC card at address 0001 [ 7.241718] mmcblk0: mmc0:0001 AJTD4R 14.6 GiB [ 7.246371] mmcblk0boot0: mmc0:0001 AJTD4R partition 1 4.00 MiB [ 7.252406] mmcblk0boot1: mmc0:0001 AJTD4R partition 2 4.00 MiB [ 7.258376] mmcblk0rpmb: mmc0:0001 AJTD4R partition 3 4.00 MiB, chardev (243:0) [ 7.267255] mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 [ 7.277979] hid-generic 0003:1915:1025.0001: input,hidraw0: USB HID v1.10 Keyboard [XING WEI 2.4G USB USB Composite Device] on usb-xhci-hcd.0.auto-1.2/input2 [ 7.294064] input: XING WEI 2.4G USB USB Composite Device Mouse as /devices/platform/soc/soc:xhci@f7d00000/f7d00000.dwc3/xhci-hcd.0.auto/usb2/2-1/2-1.2/2-1.2:1.3/0003:1915:1025.0002/input/input3 [ 7.311485] input: XING WEI 2.4G USB USB Composite Device Consumer Control as /devices/platform/soc/soc:xhci@f7d00000/f7d00000.dwc3/xhci-hcd.0.auto/usb2/2-1/2-1.2/2-1.2:1.3/0003:1915:1025.0002/input/input4 [ 7.329794] input: XING WEI 2.4G USB USB Composite Device System Control as /devices/platform/soc/soc:xhci@f7d00000/f7d00000.dwc3/xhci-hcd.0.auto/usb2/2-1/2-1.2/2-1.2:1.3/0003:1915:1025.0002/input/input5 [ 7.347925] hid-generic 0003:1915:1025.0002: input,hidraw1: USB HID v1.10 Mouse [XING WEI 2.4G USB USB Composite Device] on usb-xhci-hcd.0.auto-1.2/input3 [ 7.361798] usbcore: registered new interface driver usbhid [ 7.367369] usbhid: USB HID core driver [ 7.371519] ion-berlin 6c400000.ion: ion_berlin_probe 2 heaps done [ 7.377857] ashmem: initialized [ 7.380996] exFAT: Version 1.3.0 [ 17.513245] usbcore: registered new interface driver snd-usb-audio [ 17.519650] berlin-pcm probe (____ptrval____) [ 17.524757] netem: version 1.3 [ 17.527809] u32 classifier [ 17.530513] input device check on [ 17.534174] Actions configured [ 17.537987] xt_time: kernel timezone is -0000 [ 17.542395] gre: GRE over IPv4 demultiplexor driver [ 17.547273] IPv4 over IPsec tunneling driver [ 17.551863] Initializing XFRM netlink socket [ 17.556144] IPsec XFRM device driver [ 17.559981] NET: Registered protocol family 10 [ 17.564960] Segment Routing with IPv6 [ 17.568693] mip6: Mobile IPv6 [ 17.571974] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 17.578239] NET: Registered protocol family 17 [ 17.582696] NET: Registered protocol family 15 [ 17.587146] l2tp_core: L2TP core driver, V2.0 [ 17.591501] l2tp_ppp: PPPoL2TP kernel driver, V2.0 [ 17.596509] tz_logger_dev: created 128K log 'tzlogger' [ 17.601818] registered taskstats version 1 [ 17.605917] Loading compiled-in X.509 certificates [ 17.610765] Key type ._fscrypt registered [ 17.614774] Key type .fscrypt registered [ 17.618692] Key type fscrypt-provisioning registered [ 17.623947] pstore: Using crash dump compression: zstd [ 17.632072] [avio] avio_module:avio_sub_module_probe:107 [ 17.637403] [avio] avio_module_avio_probe [ 17.641411] [avio] avio_module_drv_vpp_probe:1041: [ 17.646212] [avio] avio_module:avio_sub_module_config:143 [ 17.651607] [avio] drv_vpp_config:405: [ 17.655415] [avio] drv_vpp_get_mipi_rst:54 Gpio desc Fail ERR[-2] [ 17.661505] [avio] drv_vpp_read_vpp_cfg:85 - start [ 17.666370] [avio] avio_devices_vpp_enable_clocks: num:6, clk:avio_txescclk, ret:0, rate:200000000 [ 17.675416] [avio] avio_devices_vpp_enable_clocks: num:7, clk:avio_vclk0, ret:0, rate:74250000 [ 17.684112] [avio] avio_devices_vpp_enable_clocks: num:8, clk:avio_dpiclk, ret:0, rate:400000000 [ 17.692982] [avio] avio_module_drv_aio_config:194: Node found syna,berlin-aio! [ 17.700223] [avio] drv_dhub_read_dhub_cfg:43: frameRate - 3c [ 17.705916] [avio] drv_dhub_read_dhub_cfg:53: irq - vpp_dhub:9e, ag_dhub:ffffffc3 [ 17.713398] [avio] drv_dhub_get_dhub_cfg:80: AVIO base : f7400000/200000 [ 17.720104] [avio] ioremap success: vir_addr: (____ptrval____), size: 0x200000, phy_addr: f7400000! [ 17.729148] [avio] register cdev device major [238] [ 17.734041] [avio] setup cdevs device minor [0] [ 17.738602] [avio] create device sysfs [avio] [ 17.742960] [avio] avio_module:avio_sub_module_init:254 [ 17.748437] [avio] aio->pbase = (____ptrval____) [ 17.753055] [avio] aio->gbl_base = (____ptrval____) [ 17.757928] [avio] avio_module_aio: init done [ 17.762280] [avio] avio_device_init ok [ 17.766036] [avio] avio_module:avio_sub_module_create_proc_file:385 [ 17.772307] [avio] avio_probe OK [ 17.776218] berlin-pcm probe (____ptrval____) [ 17.780644] got irq 26 chid 10 [ 17.783708] i2s_pri_loopback_probe: done irq 26 chid 10 dummy_data 0 disable_mic_mute 0 [ 17.791760] got irq 27 chid 11 [ 17.794830] i2s_hdmi_loopback_probe: done irq 27 chid 11 dummy_data 0 [ 17.801332] iter soc-i2s-hdmi-lpbk available [ 17.805613] dai 0: cpu dai i2s_hdmi_lpbk codec dai snd-soc-dummy [ 17.811727] syna-berlin-asoc soc:vs680-asoc: snd-soc-dummy-dai <-> soc:i2s_hdmi_lpbk mapping ok [ 17.820521] berlin_asoc_probe: probe done [ 17.824653] mrvl_fb_probe: frame-rate:0, frame-size-ndx:1, frame-size:1920x1080 [ 17.831958] mrvl_fb_fix.line_length:1e00 [ 17.836160] cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 17.844234] cryptomgr_probe (156) used greatest stack depth: 14312 bytes left [ 17.844586] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 17.857984] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 [ 17.866599] cfg80211: failed to load regulatory.db [ 17.866647] ALSA device list: [ 17.874363] #0: XING WEI 2.4G USB USB Composite Device at usb-xhci-hcd.0.auto-1.2, full speed [ 17.883063] #1: vs680-asoc [ 17.886046] ttyS0 - failed to request DMA [ 17.890243] Freeing unused kernel memory: 1152K [ 17.894835] cryptomgr_probe (156): highest shadow stack usage: 168 bytes [ 17.952686] Run /init as init process [ 17.960660] init: init first stage started! [ 17.965211] init: Loading module /lib/modules/tsp.ko with args '' [ 17.971920] [tsp kernel driver]register cdev device major [237] [ 17.977867] [tsp kernel driver]setup cdevs device minor [0] [ 17.983504] [tsp kernel driver]create device sysfs [tsp] [ 17.988813] [tsp kernel driver]tsp_device_init ok [ 17.993528] [tsp kernel driver]berlin_tsp_probe OK [ 17.998460] init: Loaded kernel module /lib/modules/tsp.ko [ 18.003998] init: Loading module /lib/modules/vpu.ko with args '' [ 18.010526] [vpu kernel driver] vpu probe enter [ 18.015071] [vpu kernel driver] find vpu device h1 [ 18.019867] [vpu kernel driver] request irq:21 [ 18.024315] [vpu kernel driver] register space [mem 0xf7000000-0xf73fffff] [ 18.031230] [vpu kernel driver] vpu:h1 probe ok [ 18.035816] [vpu kernel driver] vpu probe enter [ 18.040345] [vpu kernel driver] find vpu device vxg [ 18.045246] [vpu kernel driver] request irq:34 [ 18.049687] [vpu kernel driver] register space [mem 0xf7600000-0xf77fffff] [ 18.056615] [vpu kernel driver] vpu:vxg probe ok [ 18.061361] init: Loaded kernel module /lib/modules/vpu.ko [ 18.066922] init: Loading module /lib/modules/shm.ko with args '' [ 18.073736] init: Loaded kernel module /lib/modules/shm.ko [ 18.079256] init: Loading module /lib/modules/aout.ko with args '' [ 18.086292] aout_probe ok [ 18.089024] init: Loaded kernel module /lib/modules/aout.ko [ 18.094667] init: Loading module /lib/modules/berlin_cc.ko with args '' [ 18.101645] [berlin_cc kernel driver] berlin cc init [ 18.129568] EXT4-fs (mmcblk0p25): Ignoring removed nomblk_io_submit option [ 18.146355] EXT4-fs (mmcblk0p25): warning: maximal mount count reached, running e2fsck is recommended [ 18.156522] EXT4-fs (mmcblk0p25): recovery complete [ 18.161787] EXT4-fs (mmcblk0p25): mounted filesystem with ordered data mode. Opts: errors=remount-ro,nomblk_io_submit [ 18.174205] e2fsck: executing /system/bin/e2fsck failed: Permission denied [ 18.174244] init (161) used greatest stack depth: 13784 bytes left [ 18.181101] e2fsck: e2fsck terminated by exit(255) [ 18.181101] [ 18.196115] EXT4-fs (mmcblk0p25): warning: maximal mount count reached, running e2fsck is recommended [ 18.205855] EXT4-fs (mmcblk0p25): mounted filesystem with ordered data mode. Opts: discard [ 18.238129] random: init: uninitialized urandom read (16 bytes read) [ 18.245160] random: init: uninitialized urandom read (16 bytes read) [ 18.251869] random: init: uninitialized urandom read (16 bytes read) [ 18.267232] device-mapper: verity: sha256 using implementation "sha256-ce" [ 18.279111] EXT4-fs (dm-5): mounted filesystem without journal. Opts: barrier=1 [ 18.291062] device-mapper: verity: sha256 using implementation "sha256-ce" [ 18.301442] EXT4-fs (dm-6): mounted filesystem without journal. Opts: barrier=1 [ 18.309714] device-mapper: verity: sha256 using implementation "sha256-ce" [ 18.321497] EXT4-fs (dm-7): mounted filesystem without journal. Opts: barrier=1 [ 18.329931] device-mapper: verity: sha256 using implementation "sha256-ce" [ 18.341122] EXT4-fs (dm-8): mounted filesystem without journal. Opts: barrier=1 [ 18.367123] printk: init: 52 output lines suppressed due to ratelimiting [ 18.484427] init: Opening SELinux policy [ 18.496916] init: Loading SELinux policy [ 18.517284] SELinux: Permission nlmsg_getneigh in class netlink_route_socket not defined in policy. [ 18.526620] SELinux: the above unknown classes and permissions will be denied [ 18.533786] SELinux: policy capability network_peer_controls=1 [ 18.539702] SELinux: policy capability open_perms=1 [ 18.544670] SELinux: policy capability extended_socket_class=1 [ 18.550587] SELinux: policy capability always_check_network=0 [ 18.556422] SELinux: policy capability cgroup_seclabel=0 [ 18.561819] SELinux: policy capability nnp_nosuid_transition=1 [ 18.658226] audit: type=1403 audit(18.650:2): auid=4294967295 ses=4294967295 lsm=selinux res=1 [ 18.666856] audit: type=1404 audit(18.650:3): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=selinux res=1 [ 18.697232] selinux: SELinux: Loaded file_contexts [ 18.702031] selinux: [ 18.755744] init: init second stage started! [ 18.784617] init: Using Android DT directory /proc/device-tree/firmware/android/ [ 18.794751] init: Overriding previous property 'persist.sys.usb.config':'none' with new value 'adb' [ 18.805349] init: Overriding previous property 'persist.sys.usb.config':'adb' with new value 'none' [ 18.814441] init: Couldn't load property file '/vendor/default.prop': open() failed: No such file or directory: No such file or directory [ 18.828788] init: Do not have permissions to set 'persist.bluetooth.prefferedrole' to 'master' in property file '/vendor/build.prop': SELinux permission check failed [ 18.843708] init: Do not have permissions to set 'persist.sys.usb.config' to 'none' in property file '/vendor/build.prop': SELinux permission check failed [ 18.858504] init: Do not have permissions to set 'persist.sys.usb.config' to 'none' in property file '/vendor_dlkm/etc/build.prop': SELinux permission check failed [ 18.873462] init: Couldn't load property file '/odm_dlkm/etc/build.prop': open() failed: No such file or directory: No such file or directory [ 18.886718] init: Do not have permissions to set 'persist.sys.usb.config' to 'none' in property file '/odm/etc/build.prop': SELinux permission check failed [ 19.116946] linkerconfig (189) used greatest stack depth: 11904 bytes left [ 19.170942] ueventd: ueventd started! [ 19.176891] selinux: SELinux: Loaded file_contexts [ 19.181683] selinux: [ 19.184187] ueventd: Parsing file /system/etc/ueventd.rc... [ 19.184217] linkerconfig (189): highest shadow stack usage: 320 bytes [ 19.190226] ueventd: Added '/vendor/etc/ueventd.rc' to import list [ 19.201201] apexd (191) used greatest stack depth: 11792 bytes left [ 19.202412] ueventd: Added '/odm/etc/ueventd.rc' to import list [ 19.214857] ueventd: Parsing file /vendor/etc/ueventd.rc... [ 19.220530] ueventd: Unable to read config file '/vendor/etc/ueventd.rc': open() failed: No such file or directory [ 19.230982] ueventd: Parsing file /odm/etc/ueventd.rc... [ 19.236360] ueventd: Unable to read config file '/odm/etc/ueventd.rc': open() failed: No such file or directory [ 19.264748] boringssl_self_ (192) used greatest stack depth: 11760 bytes left [ 19.281167] random: init.insmod.sh: uninitialized urandom read (40 bytes read) [ 19.294002] random: init.insmod.sh: uninitialized urandom read (40 bytes read) [ 19.299160] random: boringssl_self_: uninitialized urandom read (40 bytes read) [ 19.356389] ion_system_cust_heap: module is from the staging directory, the quality is unknown, you have been warned. [ 19.379435] ion_cma_cust_heap: module is from the staging directory, the quality is unknown, you have been warned. [ 19.402113] [berlin_bm kernel driver] berlin bm init [ 19.409273] insmod (201) used greatest stack depth: 11376 bytes left [ 19.449672] Synaptics PVR init. Version 201803121700 [ 19.454693] insmod (201): highest shadow stack usage: 376 bytes *******IR ready******** <<[GPU TA]>> open session for VS680. [ 19.565976] pvr: ui64ClockSpeed=700000000. [ 19.570099] pvr: clockspeed: 700000000 [ 19.574651] pvr: register base: 0xf7980000 [ 19.579268] pvr: register size: 0x80000 [ 19.583632] pvr: irq: 37 [ 19.587555] pvr: need alloc from dma zone: false. [ 19.592350] PVR_K: 204: Read BVNC 29.14.108.208 from HW device registers [ 19.599326] PVR_K: 204: RGX Device registered with BVNC 29.14.108.208 [ 19.606332] [drm] Initialized pvr 1.15.6052913 20170530 for f7980000.gpu on minor 0 [ 19.614538] ion_buffer_release: buffer still mapped in the kernel [ 19.621689] insmod (204) used greatest stack depth: 10008 bytes left [ 19.631853] synap: loading out-of-tree module taints kernel. [ 19.638306] SyNAP:[synap_platform_probe():1545] irq line from dts = 42 [ 19.638306] [ 19.682636] insmod (204): highest shadow stack usage: 448 bytes [ 19.734755] SyNAP:[synap_load_ta():345] SyNAP TA loaded successfully [ 19.762503] SyNAP:[synap_platform_probe():1596] driver initialize successfully [ 19.770601] insmod (211) used greatest stack depth: 9792 bytes left [ 19.899792] Registered swp emulation handler [ 19.931695] logd.auditd: start [ 19.934844] logd.klogd: 19932216000 console:/ $ [ 19.953702] init: wait for '/dev/vxg' took 0ms [ 19.958368] init: wait for '/dev/tz' took 0ms [ 19.963195] init: wait for '/dev/avio' took 0ms [ 19.967974] init: wait for '/dev/syna-isp' took 0ms [ 19.972996] init: wait for '/dev/cec' took 0ms [ 19.977546] init: wait for '/dev/tsp' took 0ms [ 19.982099] init: wait for '/dev/ion' took 0ms [ 19.986679] init: wait for '/dev/ovp' took 0ms [ 19.991225] init: wait for '/dev/aout' took 0ms [ 19.995930] init: wait for '/dev/amp-shm' took 0ms [ 20.703372] syna-isp f9100000.isp: ISP DHUB:open Done! [ 20.818101] VPP_CA_getVppTaUUID:50: loading recovery ta:1(vpp.ta) [ 20.824211] VPP_CA_Initialize:72: result:0 [ 20.838781] VPP_CA_Initialize:95: TEEC_OpenSession:0 result:0 [ 24.049048] logd: FrameworkListener: read() failed (Connection reset by peer) [ 24.113036] [Kernel] sGPURegAddr=0:f7980000 [ 24.117252] [Kernel] sFWStackAddr=0:6c45f000 [ 24.121528] [Kernel] ui32FWPageTableLog2PageSize=14 [ 24.126425] [Kernel] ui32FWPageTableNumPages=2 ----------SMCEC2SM: received cec msg:id=1---------- Got Appready packet from SoC CEC: 01 00 00 00 01 00 00 00 SM CEC:pcBody[4]=0x1. SMCEC2SM: sending launch req to SOC: 06 00 00 00 ----------SMCEC2SM: received cec msg:id=4---------- ----------SMCEC2SM: received cec msg:id=2---------- SM CEC:Logical address:0x4,Physical address:0x1000 SM CEC:Device Type:4, bActiveSrc:0, bValid:1 [ 32.588634] rtk_btusb: btchr_open: Device not probed [ 32.593767] rtk_btusb: btchr_open: Device not probed [ 32.598827] rtk_btusb: btchr_open: Device not probed [ 32.604039] rtk_btusb: btchr_open: Device not probed [ 32.609152] rtk_btusb: btchr_open: Device not probed [ 32.614307] rtk_btusb: btchr_open: Device not probed [ 32.619439] rtk_btusb: btchr_open: Device not probed [ 32.624657] rtk_btusb: btchr_open: Device not probed [ 32.629866] rtk_btusb: btchr_open: Device not probed [ 32.635109] rtk_btusb: btchr_open: Device not probed [ 34.054748] rtk_btusb: btchr_open: Device not probed [ 34.059862] rtk_btusb: btchr_open: Device not probed [ 34.064981] rtk_btusb: btchr_open: Device not probed [ 34.070189] rtk_btusb: btchr_open: Device not probed [ 34.075316] rtk_btusb: btchr_open: Device not probed [ 34.080486] rtk_btusb: btchr_open: Device not probed [ 34.085658] rtk_btusb: btchr_open: Device not probed [ 34.090778] rtk_btusb: btchr_open: Device not probed [ 34.095962] rtk_btusb: btchr_open: Device not probed [ 34.101077] rtk_btusb: btchr_open: Device not probed [ 36.134784] rtk_btusb: btchr_open: Device not probed [ 36.139953] rtk_btusb: btchr_open: Device not probed [ 36.145209] rtk_btusb: btchr_open: Device not probed [ 36.150409] rtk_btusb: btchr_open: Device not probed [ 36.155546] rtk_btusb: btchr_open: Device not probed [ 36.160680] rtk_btusb: btchr_open: Device not probed [ 36.165896] rtk_btusb: btchr_open: Device not probed [ 36.171074] rtk_btusb: btchr_open: Device not probed [ 36.176297] rtk_btusb: btchr_open: Device not probed [ 36.181461] rtk_btusb: btchr_open: Device not probed [ 36.363590] audit: rate limit exceeded [ 38.576156] rtk_btusb: btchr_open: Device not probed [ 38.581156] rtk_btusb: btchr_open: Device not probed [ 38.586191] rtk_btusb: btchr_open: Device not probed [ 38.591245] rtk_btusb: btchr_open: Device not probed [ 38.596356] rtk_btusb: btchr_open: Device not probed [ 38.601549] rtk_btusb: btchr_open: Device not probed [ 38.606706] rtk_btusb: btchr_open: Device not probed [ 38.611754] rtk_btusb: btchr_open: Device not probed [ 38.616935] rtk_btusb: btchr_open: Device not probed [ 38.622068] rtk_btusb: btchr_open: Device not probed [ 40.315771] rtk_btusb: btchr_open: Device not probed [ 40.320836] rtk_btusb: btchr_open: Device not probed [ 40.325909] rtk_btusb: btchr_open: Device not probed [ 40.330923] rtk_btusb: btchr_open: Device not probed [ 40.335972] rtk_btusb: btchr_open: Device not probed [ 40.340988] rtk_btusb: btchr_open: Device not probed [ 40.345979] rtk_btusb: btchr_open: Device not probed [ 40.351037] rtk_btusb: btchr_open: Device not probed [ 40.356074] rtk_btusb: btchr_open: Device not probed [ 40.361095] rtk_btusb: btchr_open: Device not probed [ 43.116989] rtk_btusb: btchr_open: Device not probed [ 43.122023] rtk_btusb: btchr_open: Device not probed [ 43.127029] rtk_btusb: btchr_open: Device not probed [ 43.132051] rtk_btusb: btchr_open: Device not probed [ 43.137178] rtk_btusb: btchr_open: Device not probed [ 43.142217] rtk_btusb: btchr_open: Device not probed [ 43.147253] rtk_btusb: btchr_open: Device not probed [ 43.152251] rtk_btusb: btchr_open: Device not probed [ 43.157253] rtk_btusb: btchr_open: Device not probed [ 43.162231] rtk_btusb: btchr_open: Device not probed [ 44.844569] rtk_btusb: btchr_open: Device not probed [ 44.849551] rtk_btusb: btchr_open: Device not probed [ 44.854587] rtk_btusb: btchr_open: Device not probed [ 44.859565] rtk_btusb: btchr_open: Device not probed [ 44.864551] rtk_btusb: btchr_open: Device not probed [ 44.869536] rtk_btusb: btchr_open: Device not probed [ 44.874523] rtk_btusb: btchr_open: Device not probed [ 44.879500] rtk_btusb: btchr_open: Device not probed [ 44.884487] rtk_btusb: btchr_open: Device not probed [ 44.889464] rtk_btusb: btchr_open: Device not probed Chip Temperature: 48 degC(raw_data = 358)

Danach habe ich mit grep nach Zeilen gesucht, die "I2C" enthalten. Dies ist das Ergebnis:
>> grep -i i2c teraterm2.log [ 0.329923] gpio-394 (gpioi2c3): enforced open drain please flag it properly in DT/ACPI DSDT/board file [ 0.329943] gpio-393 (gpioi2c3): enforced open drain please flag it properly in DT/ACPI DSDT/board file [ 0.329975] i2c-gpio gpioi2c3: using lines 394 (SDA) and 393 (SCL) [ 3.531082] <<-GTP-INFO->> GTP I2C Address: 0x5d [ 3.712789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 3.886033] <<-GTP-ERROR->> GTP i2c test failed time 1. [ 3.912789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.082619] <<-GTP-ERROR->> GTP i2c test failed time 2. [ 4.112794] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.282619] <<-GTP-ERROR->> GTP i2c test failed time 3. [ 4.312789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.482619] <<-GTP-ERROR->> GTP i2c test failed time 4. [ 4.512789] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -5! Process reset. [ 4.682619] <<-GTP-ERROR->> GTP i2c test failed time 5. [ 4.712618] <<-GTP-ERROR->> I2C communication ERROR! [ 4.717751] <<-GTP-ERROR->> I2C Read: 0x8140, 6 bytes failed, errcode: -5! Process reset. [ 4.892306] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.062791] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.232789] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.402789] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.572788] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.742789] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -5! Process reset. [ 5.912619] <<-GTP-ERROR->> I2C read 0x41E4, 1 bytes, double check failed! [ 5.919662] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.082789] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.252789] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.422788] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.592788] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.762788] <<-GTP-ERROR->> I2C Read: 0x814A, 1 bytes failed, errcode: -5! Process reset. [ 6.932619] <<-GTP-ERROR->> I2C read 0x814A, 1 bytes, double check failed! [ 6.979070] <<-GTP-INFO->> I2C function: without pre and end cmd! [ 6.996946] i2c /dev entries driver
Jegliche Kommunikation auf I2C, die im Log steht, geht in die Hose. Der I2C-Bus, das ist ja bekanntlich SDA für Data und SCL für Clock (und VCC und GND) scheint beim BPI-M6 über die GPIO-Adresse 393 und 394 abgewickelt zu werden.

Beide dieser Pins scheinen in der Luft zu hängen und gar nicht angeschlossen zu sein (enforced open drain). Oder wohl eher: der Chip, der die I2C-Kommunikation bewerkstelligt, ist defekt oder die Leiterbahnen dahin sind durchtrennt oder nicht richtig verlötet. Da kann die I2C-Kommunikation natürlich nicht funktionieren.

Aus meinem Projekt I2C-Scanner und Tester mit einer STM32 Bluepill weiß ich noch, dass es eine Adressdatenbank für I2C-Geräte gibt. Da die Geräte auf einem I2C-Bus alle parallel geschaltet sind, braucht jedes Gerät eine unterschiedliche ID, hier: 0x8047, 0x8140, 0x41E4, 0x814A.

Normalerweise gehen die I2C-Adressen für Geräte bis 0x7F. Man kann natürlich den Adressraum von diesen 7 Bit auf 16 erweitern und dann intern nutzen, so wie es hier der Fall ist. Alle I2C-Adressen im Log weisen darum auf interne I2C-Geräte hin.

Nun könnte es natürlich sein, dass auf Verdacht I2C-Adresse getestet werden, ob da überhaupt etwas dran hängt. Plus das nur geloggt wird, wenn ein Fehler auftritt. Allerdings ist das Log (jetzt nicht der Nur-I2C-Teil) auch voll mit Erfolgsmeldungen. Außerdem ist die "Open Drain"-Meldung sicheres Zeichen dafür, das GPIO 393 und 394 nicht richtig angebunden sind.

Wo liegt nur der Fehler?


Da ich den starken Verdacht habe, dass irgendwas am Board mit dem SD-Karten-Slot und I2C-Bus nicht richtig sein kann, habe ich mir das Board mal genauer mit der Lupe angeschaut. Mir ist aber nichts auffälliges aufgefallen, kein durchgebranntes Bauteil oder so. Auch die µSD-Card-Buchse schien mir richtig verlötet, wenn hier auch mit dem Lötzinn ein wenig gespart wurde, aber vielleicht soll das ja so.

Das einzige, was mir ins Auge fiel, war eine fehlende Diode links unterhalb des SPI-Tasters (siehe Foto in orange markiert). Hier habe ich aber nach anderen Fotos im Internet gesucht und allen fehlte diese Diode. Sie ist wohl nicht wirklich nötig.

Die Kommunikation mit dem Support ist im Folgenden ein wenig unspezifisch und ausweichend geworden. Das hat mir gar nicht gefallen. Ich habe genaue Log-Dateien und technische Fehlerbeschreibungen geschickt und mir Mühe gegeben, alles genauestens zu beschreiben und möglichst hilfreich zu sein und darum gebeten, beim Entwicklungsteam nachzufragen. Und zurück kamen nur Anfänger-Antworten wie "Haben Sie den SPI-Knopf auch gedrückt?", "Haben Sie das Image richtig gebrannt?". Alles Nachfragen, die unnötig, ausweichend und nicht zielführend waren. Ich hatte das Gefühl, dass meine e-mails gar nicht groß gelesen wurden, denn da stand nämlich schon drin, dass ich genau das gemacht hatte und mich an die und die Anleitung gehalten hatte. Erst als ich die Chefs in meiner mail CC gesetzt hatte, kam wieder Bewegung in die Sache und es wurde ansatzweise auf meine Fragen eingegangen. Gelöst ist das Problem aber immer noch nicht.

Als letztes kam die Formulierung, dass das dwcmshc_send_cmd timeout daran liegen würde, dass die von mir verwendeten SD Karten nicht kompatibel sein würden. Ich habe drei Karten ausprobiert, von Markenkarten von Samsung bis Billig-Karten aus China. Keine hat funktioniert. Und die I2C-Fehler sollen angeblich von einem nicht angeschlossenen Display herstammen. Komisch nur, dass es gleich vier Adressen sind, und nicht nur eine.

Statt der angeblich inkompatiblen SD Karten sollte ich doch mal eine andere ausprobieren, im Test würde man SanDisk Ultra 16G Class 10 SD Card benutzen (links):



Also habe ich eine Karte vom selben Hersteller SanDisk, auch eine Ultra, auch eine Class 10 versucht. Auch das führte zu keinem anderen Ergebnis: es konnte nicht davon gebootet werden. Es ist allerdings eine XC I und keine HC I. Ich glaube, dass ist ein anderer Standard. Und in dem Source-Code oben gibt es ja auch die Funktion namens sdhci_request. Eventuell kann der M6 nur mit HCI-Karten umgehen?

Hierzu habe ich mir mal die Spezifikation bei Wikipedia ein wenig angeschaut: SDHC (SD 2.0) macht Speicherkapazitäten bis zu 32 GB unter der Bezeichnung SDHC (Secure Digital High Capacity) möglich. Erst SDXC (SD 3.0, Secure Digital eXtended Capacity) kann mehr und bis zu 2048 GB.

Aber der BPI-M6 soll doch SD-Karten bis zu 256 GB unterstützen, so zumindest in den Hardware Specs angegeben:



Außerdem hat mir der Support ein Debug-Logfile von ihrem Bootvorgang des Linux Ubuntu-Images mitgeschickt. Das muss ich erst noch genauer analysieren, was da anders ist, aber einiges fällt jetzt schon auf: einige der Fehler stehen auch in deren Log, mit dem sie Linux von SD booten konnte.

Ich gebe die Hoffnung nicht auf, dass es vielleicht doch nur an der SD-Karte liegen könnte. Weitere Tests und Analysen folgen. Als "Funktioniert out-of-the-box-System" würde ich den Banana Pi M6 allerdings nicht mehr bezeichnen. Das war bisher schon einiges an Gefrickel.

Update 2024-01-17

Ich habe mir eine SanDisk Ultra HC I Class 10 mit 32 GB bestellt, genau wie die empfohlene, auch HCI, halt nur 32 GB statt 16 GB. Nun muss ich ein paar Tage warten, bis die ankommt, und dann kann ich testen, ob es mit einer SanDisk HCI Karte eventuell doch noch was wird. Mehr im nächsten Artikel.

Update 2024-01-23

Die SanDisk Ultra HC I Class 10 SD-Karte mit 32 GB ist angekommen. Im nächsten Artikel versuche ich das damit und debugge weiter.

Quellen, Literaturverweise und weiterführende Links