Die Sache mit ttyS0 serial0 ttyAMA0 UART und serial console

Begonnen von Matthias76, 23 Februar 2020, 15:37:54

Vorheriges Thema - Nächstes Thema

Matthias76

Ich habe heute nochmal direkt mit Monitor am PI statt per SSH gearbeitet... gebootet.
Ja, dann sieht man es sogar.
Kurz nachdem er angeschaltet wurde steht dort
uboot (Taste drücken zum Stoppen des automatischen Bootens)
und dann kommen die Signale am ttyS0 so rüber, wie eine Tastatur, wo man ständig auf einer Taste haut.

Also entweder man kann es schon dort/vorher unterdrücken oder man müsste diese ganze Abfrage/Möglichkeit des "Abbruchs durch Taste" abstellen können.
Die Infos aus den Konfigdateien greifen wohl erst später. ^^

enrikb

Naja, wenn du mit Monitor und Tastatur dran bist, kannst du vermutlich das Environment vom U-boot einstellen. Und dort die serielle Konsole abschalten. Dann könnte es gehen.
Wie es genau geht, musst du dir ergurgeln.

Viele Grüße,
Enrik

Otto123

#17
Moin,

Auszug /boot/firmware/README
Zitat* config.txt     - the first configuration file read by the boot process
* syscfg.txt     - the file in which system modified configuration will be placed, included by config.txt
* usercfg.txt    - the file in which user modified configuration should be placed, included by config.txt
cat /boot/firmware/config.txt ergibt am Ende:

enable_uart=1
cmdline=nobtcmd.txt

include syscfg.txt
include usercfg.txt


Weiter geschaut:
cat /boot/firmware/nobtcmd.txt
net.ifnames=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc

Nach allem was ich weiß: hier console=ttyAMA0,115200 streichen!

Hast Du das gemacht? Dieser Befehl erledigt das "mikrochirurgisch"
sudo sed -i 's/console=ttyAMA0,115200 //' /boot/firmware/nobtcmd.txt

Zusätzlich musst Du seriel-getty disablen, aber das hast Du sicher schon gemacht, sonst ist die UART im System nicht verwendbar ;)
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo systemctl mask serial-getty@ttyAMA0.service


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

#19
Nein! Damit fehlt dann die UART im System. Er braucht diese ja!
Zitat# Please DO NOT modify this file; if you need to modify the boot config, the
# "usercfg.txt" file is the place to include user changes.
Die config.txt ist in Ruhe zu lassen!
Dort stehen defaults, die werden überschrieben durch
/boot/firmware/usercfg.txt - die ist leer
/boot/firmware/syscfg.txt - die lädt wiederum die nobtcfg.txt

Also wenn Änderungen dann nur in der  /boot/firmware/usercfg.txt

Aber da braucht man nichts ändern, wie schon gesagt die nobtcfg.txt ändern.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

O.K. ... wobei ich persönlich zum debuggen es testen würde .. ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

#21
Von der Sache her, alles wie vermutet :)
Ich habe jetzt eine serielle Anbindung an dem Pi (CP2102) und kann mich über die serielle Console einloggen und normal steuern :)
Schicke ich während des boot Vorganges (zeitlich etwa beim/kurz nach dem bunten Bildschirn) einen sinnlosen Block über die serielle Schnittstelle, lande ich im uboot  8)
"hit any key"
wenn ich dann dort boot eingebe, geht es normal weiter

Mal sehen wie ich das Uboot störungsfrei  aufsteigen lassen kann  ???
Edit:
Nächste Erkenntniss: Das Löschen in der /boot/firmware/nobtcmd.txt entzieht dem System die serielle Console, aber das Uboot hat sie noch  :-[
Edit2:
setenv bootdelay 0 im Uboot hilft nicht. Ich bin für Ideen sehr empfänglich :) Es ist für  mich ziemlich trüb da unten.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

enrikb

Zitat von: Otto123 am 26 Februar 2020, 12:44:08
Edit:
Nächste Erkenntniss: Das Löschen in der /boot/firmware/nobtcmd.txt entzieht dem System die serielle Console, aber das Uboot hat sie noch  :-[
Hätte ich nicht anders erwartet. Die Pi-Firmware passt ja erstmal nur den device tree für den Linux-Kernel an. Wenn das U-boot den nicht verwendet, ist die Schnittstelle noch da.
Es sollte aber möglich sein, im U-boot environment die Konsolen zu konfigurieren und auf 'video/keyboard only' zu stellen.
Gruß,
Enrik

Otto123

#23
Bingo!
Danke :)
also einmal im uboot (hit any key)
setenv stdin vidconsole,usbkbd
saveenv


Man kann sich das vorher mit pri anschauen, da steht relativ zum Schluss
stdin serial,usbkbd

Edit:
Ob das jetzt wirklich richtig war? Jetzt bleibt das Uboot finster, man kann zwar blind auf der Tastatur tippen. Ich habe gedacht ich knipse nur die serielle Eingabe aus?
Edit2
Sieht irgendwie doch alles gut aus. Die serielle Ausgabe gibt es noch, aber er reagiert nicht auf Eingaben.
Edit3:
Und wenn man stdin=vidconsole,usbkbd setzt bleibt das Uboot auch nicht mehr finster. Man kann dann nur noch mit dem keyboard den Bootvorgang mit Sichtkontakt unterbrechen. :)

Um nicht unbedingt ins Uboot steigen zu müssen, geht es auch in der Terminalzeile, allerdings muss mindestens einmal im uboot saveenv erfolgt sein:
sudo sed -i 's/stdin=serial,usbkbd/stdin=vidconsole,usbkbd/' /boot/firmware/uboot.env

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Matthias76

Hey Otto

Das klingt nach einer Lösung.
Nur gibt es in meinem System keine Datei, die "uboot" oder "uboot.env" heißt.  :o
Nun, dann dachte ich, tippe ich es einfach ein,
aber die Tastatur geht bei mir zu dem Zeitpunkt noch nicht.
2...
1...
0...
boot...

Egal, wie oft ich und auf welche Taste ich drücke.

Auch wenn ich mit den seriellen Infos den Bootvorgang aussteigen lasse, habe ich noch keine Tastatur.
Komische Sache.

Otto123

#25
Wie geht das?
Das Image was er für den Pi3 64 bit herunterlädt ist exakt das gleiche wie das beim Pi4!?!
Zitatubuntu-18.04.4-preinstalled-server-arm64+raspi3
Was hast Du für ein Image geladen?
Edit: Ok Hab ich nicht gewusst: Die uboot.env Datei gibt es erst nach dem ersten saveenv im uboot  :-X

Aber eine Tastatur sollte schon gehen  :o was hast Du für eine Tastatur dran stecken?

Ansonsten, verbinde die serielle Schnittstelle von deinem cubietruck mit dem pi und bedien das uboot über eine serielle console von dort  ;D
Einmal saveenv reicht ja
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Matthias76

Ich kann hier gerade nur entweder Cubie oder Pi4 in Betrieb nehmen (außerdem würde auch eine Stift/Buchsenleiste dann fehlen).
Als Tastatur habe ich ein übliches drahtloses Set (Tastatur / Maus-Kombi).
Ich probiere bei Gelegenheit noch eine einfachere Tastatur.

Kann ich nicht ein gültige uboot.dev woanders her bekommen? Was muss den sonst so drin stehen? Was steht in eurer?
Wobei ich irgendwo gelesen habe, man sollte vorsichtig damit sein, sonst bootet gar nichts mehr.
"uboot.dev" führt bei Google sowieso nur zu sehr wenig Funden.  ;-)

Otto123

Zitat von: Matthias76 am 29 Februar 2020, 14:36:42
Als Tastatur habe ich ein übliches drahtloses Set (Tastatur / Maus-Kombi).
...
Kann ich nicht ein gültige uboot.dev woanders her bekommen?
Was ist üblich?  ::) Tastaturen die über Bluetooth angebunden sind (oder spezielle Treiber brauchen), werden zu diesem Zeitpunkt nicht funktionieren. Spezielle USB Sticks wie "Logitech unified" funktionieren.

Das mit der uboot.dev würde ich unbedingt lassen! Die ist mit Sicherheit Systemspezifisch.

Wenn das mit der Tastatur so ein Problem sein sollte  :-X kannst Du Dir entweder ein neues uboot kompilieren oder mit den uboot-tools die bestehende irgendwie "manipulieren". Habe mir das einen Abend lang angeschaut, da würde ich lieber eine einfache USB Tastatur bei ... bestellen :) und bis dahin was schönes machen.

Gruß Otto

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

enrikb

Hi,

in Anbetracht der Tatsache, dass der Pi 4 vier zusätzliche serielle Ports hat, würde ich einfach auf einen anderen ausweichen, wenn die passenden Pins frei sind.

Viele Grüße,
Enrik