Access to a console can be mandatory when you SBC doesn't work as expected (e.g Network or HDMI output doesn't work). When SSH/Display access isn't possible access to console via UART is the best way to get a clue where your SBC hangs. This short tutorial should give you an introduction how this works. For some boards, armbian implements an USB gadget mode (a 'fake' serial console over microUSB) describen below. As a reminder an USB-UART bridge is always prefered over USB gadget mode whenever possible (UART get's initialized before the gadget driver and also before HDMI, means even if you don't get a proper output from HDMI or gadget mode console, it is possible that UART will give you the needed information).
We need an Terminal program to access the console. If you use Linux on your host system I prefer picocom (something like minicom will also do the job) which can be installed:
on debian a like systems:
sudo apt-get install picocom
from arch community repo:
on fedora systems:
yum install picocom
on Mac OS X:
brew install picocom
on Widows we use PuTTY:
UART USB Adapter:
There are various USB-UART bridges e.g FT232 (and fakes of them, cause FDTI is expensive ), CH340/1,PL2303 or CP2102
Normally it doesn't matter which one you use. I prefer the (probably fake) FDTI on the right side, but the CH341 does also a good job:
The only thing which is needed is that the signal-level matches with your SBCs needs (this is mostly 3.3V expect some Odroids e.g HC1 which has only 1.8V!). Most of these USB-UART bridges have jumpers for 5V and 3.3V, make sure that you use the 3.3V.
You've to figure out which pins on your SBC are debug UART (they've mostly a own 3 pin header, sometimes it's on the large pin header e.g. Tinkerboard) and then connect:
GND --> GND
RX --> TX
TX --> RX
You've to check dmesg (linux) or run devmgmt.msc (windows) to know which device you use.
[256597.311207] usb 3-2: Product: USB2.0-Serial
[256597.402283] usbcore: registered new interface driver ch341
[256597.402341] usbserial: USB Serial support registered for ch341-uart
[256597.402392] ch341 3-2:1.0: ch341-uart converter detected
[256597.404012] usb 3-2: ch341-uart converter now attached to ttyUSB0
--> Device will be /dev/ttyUSB0
for windows 10 (https://www.google.ch/search?client=opera&q=find+arduino+port+windows+10&sourceid=opera&ie=UTF-8&oe=UTF-8)
Something like the picture in USB Gadget Mode part of the tutorial should show up)
Armbians default settings are (expect some RK devices):
picocom -b 115200 -r -l /dev/ttyUSB0
and for some RK devices:
picocom -b 1500000 -r -l /dev/ttyUSB0
You've to set configuration in 'Serial'. COM11 is just an example and needs to be checked first, Speed (baud) needs to be changed when you deal with the few RK boards which need 1500000.
should be similar to Linux whereas the naming differs a bit. See: https://forum.odroid.com/viewtopic.php?f=53&t=841 as an example with minicom.
Normally you connect the USB-UART bridge to your host computer (and the SBC) and start picocom/putty before you power the board to ensure you get the full bootlog and not only parts of it.
USB Gadget Mode
Several board (see list) for which official armbian images exist (or csc images can be built) have no HDMI display. On those boards there's USB gadget mode driver activated so that you can have console access to them via USB connection. The following short tutorial describes how you can access to console from Linux (don't have a windows machine here at the moment, I may check it later):
connect your board via USB to your host computer (it should be one which is able to power an SBC via its USB port)
check dmesg for the device showing up:
[184372.603816] usb 3-2: Product: Gadget Serial v2.4
[184372.603818] usb 3-2: Manufacturer: Linux 4.14.65-sunxi with musb-hdrc
[184372.660041] cdc_acm 3-2:2.0: ttyACM0: USB ACM device
[184372.660402] usbcore: registered new interface driver cdc_acm
[184372.660403] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
connect to it via picocom (in this case 'picocom /dev/ttyACM0'):
chwe@chwe-acer:~$ picocom /dev/ttyACM0
port is : /dev/ttyACM0
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
Type [C-a] [C-h] to see available commands
Debian GNU/Linux 9 orangepizero ttyGS0
orangepizero login: root
You are required to change your password immediately (root enforced)
Changing password for root.
(current) UNIX password:
I assume if you use the same settings in something like putty on windows and you check which 'serial' device shows up in *where windows shows connected devices - I forgot it* you should be able to access it from windows (someone motivated may confirm this).
run devmgmt.msc and search for the serial device (in this case COM3) and connect to it via PuTTY (thanks to @hjc):
for windows 10 (https://www.google.ch/search?client=opera&q=find+arduino+port+windows+10&sourceid=opera&ie=UTF-8&oe=UTF-8):
(even the tutorial is for arduinos, it should be similar for every 'COM device')
Currently boards with USB gadget mode:
The silly approach
For those, who want to save 1$ for an USB-UART bridge, you can spend 10$ for an OrangePi Zero and use its spare UARTs to log into an other SBC... SSH --> opi, ttl --> Tinkerboard
For those loving text more than videos:
SSH to your SBC
sudo armbian-config --> system --> hardware to activate an spare UART (in this case it was UART2, will give you ttyS2)
picocom -b 115200 -r -l /dev/ttyS2
if you got a Box with S912 and armbian 5.76 - then you could "update" like I did.
Download the packages from https://yadi.sk/d/pHxaRAs-tZiei/5.77/deb and
dpkg -i armbian-config_5.77_all.deb
dpkg -i linux-image-aml-s912_5.77_arm64.deb
dpkg -i linux-headers-aml-s912_5.77_arm64.deb
dpkg -i firmware-armbian-full_5.77_all.deb
(firmware and headers could be optional from your sight of view)
Before this firmware-package I only got a Broadcom (brcm) package installed for the WiFi Firmware
Headers are for compiling Sourcecode
Well, no fancy introduction here, because this doesn't pretend to be a script for the general use, only for testers who want to try the current *very early* status of the media capabilities in the Armbian meson mainline kernel.
Warning: It will replace your current kernel with a pre-compiled nightly 4.19.20.
Download, untar and run. If you need further instructions, then you are not ready for this script (again, it is very unpolished, not for general use).
Things that you can try with this script, on a X session:
Use a 1080p@30fps h264 video, and play it with "mpv -hwdec <filename>". You'll see in the logs that it is decoding through v4l-m2mcopy
Install and run glmark2-es2
Use Chromium WebGL
Play a 1080p@30fps video in YouTube in full-screen smoothly. I'm pretty sure it is not really using HW decoding as it claims (there is no initialization message in dmesg), but it's smooth for sure.
Gstreamer is tested not to work, in some other forum I was told that Bionic version is not enough and I need to compile a newer one.
Performance is not in any way good, but it is a starting point. Anyway, the first TO-DO is getting the mali module integrated into the kernel, so there is no need to compile it separately.
I use the extracted Android dtb file modify to work with linux kernel . You can use meson8b_m201d.dtb you posted, renamed to dtb.img . not the dtd .
Also you only reset once . If run LE reset for LE . if run Armbian reset once for ...
For me the process is device default logo then screen goes off and them on and all the linux start info.
Here is other kernel test it: