На плате компьютера NanoPi NEO2 есть 4 вывода для подключения к отладочной консоли, стандартные GND, 5V, RXD и TXD. FriendlyElec для подключения предлагает два устройства:

  • USB2UART (маленький USB-донгл с выключателем питания и 4 пинами GND, 5V, TXD, RXD);
  • PSU-ONECOM (платка с полноразмерным разъёмом DB9-male для подключения к COM-порту).

Оба устройства с небольшими оговорками могут быть использованы для питания NanoPi NEO2. USB2UART сам питается от USB-порта и может питать NanoPi NEO2, но с ограничением по току 500mA. Для включения PSU-ONECOM необходим отдельный стабилизированный блок питания на 5V.

Так же можно использовать любой консольный кабель для отладки на чипах FTDI FT232RL, CH340 и PL2303. При подключении из Linux – разницы нет какой кабель использовать, т.к. в ядре присутствуют драйвера для всех трёх. А если планируется подключаться из под Windows – разница есть:

  • с чипом FTDI FT232RL проблем не возникнет ни в OS X, ни в Windows, нормальные драйвера есть даже для Windows 10 (официальный драйвер – CDM v2.12.28 WHQL Certified.zip);
  • с родной платкой USB2UART (на чипе CH340T) тоже проблем не будет ни в OS XmacOS Mojave заработало всё из коробки), ни в Windows (официальный драйвер – CH341SER.zip);
  • с переходниками на чипах Prolific PL2303 в Windows 10 было всё плохо – драйвер устанавливался, но не запускался (ошибка: Code 10).

Поэтому если покупаете мелкий одноплатник – закажите заодно оригинальный USB2UART , тем более что стоит он всего 4$. Деньги небольшие, а времени и нервов своевременная покупка может сэкономить.

Небольшой обзор переходников

На фотографиях изображены три переходника:

  • Универсальный переходник на чипе FTDI FT232RL (слева на фотографиях). Данные переходник может работать как с сигнальными уровнями 3.3V, так и с 5V, для переключения используется соответствующий джампер. Особенность переходника в том, что с чипа FT232RL на левую колодку выведены все сигнальные линии DTR, RTS, RI, DSR, DCD, CTS, TXD, RXD, 5V и GND, а не только стандартные TXD, RXD, 5V и GND. К сожалению не известен производитель данного переходника. Схематически чем-то похож на итальянский MicroBot MR002-003.2 , но никаких соответствующих надписей на плате нет.
  • Оригинальный переходник от FriendlyElec PSU-ONECOM (справа на фотографиях). Как выяснилось штука для меня бесполезная. Компьютеров с живыми COM-портами у меня в наличии нет, а использовать этот переходник через Moxa UPort смысла нет. К тому же для этого переходника дополнительно нужен отдельный блок питания.
  • Оригинальный переходник от FriendlyElec Matrix USB2UART v1.1 1704 . Из цикла дёшево, но сердито. Как уже говорилось ранее, чип на переходнике установлен CH340T, проблем с драйверами не наблюдается. Для подключения к NanoPi NEO2 будем использовать именно его.

Подготовка кабеля для подключения

В подключении переходника к NanoPi NEO2 ничего сложного нет, главное чёрный проводок подключить к пину с землёй (GND) на обоих устройствах. Но подключая кабель переходника таким образом, у нас не получится подключить шляпу NanoHat OLED на наш NanoPi NEO2, т.к. коннектор будет мешать.

Для решения этой проблемы, берём всё что есть под рукой и сооружаем короткий кабель из 10-сантиметровых проводков. С одной стороны 4-пиновая колодка, которую будем подключать к переходнику USB2UART, а с другой стороны просто 4 обжатых проводка в термоусадочной трубке.

Обжатые коннекторы под термоусадкой нужно погнуть под углом 135 градусов, для того чтобы надевшись на разъём NanoPi NEO2 они не мешали установке шляпы NanoHat OLED. Жёлтых и белых проводков, к сожалению, в наличии не было, поэтому светло-серый у нас вместо белого, а коричневый вместо жёлтого.

Подключив получившийся кабель к NanoPi NEO2 можно аккуратно сверху подключить шляпу NanoHat OLED. Когда кабель не нужен – можно его аккуратно убрать внутрь корпуса.

Подключение переходника к компьютеру с Linux

Прежде чем подключать переходник к NanoPi NEO2 – закоротите джампером выводы TXD и RXD на переходнике и подключите его к компьютеру. Это необходимо для проверки работоспособности переходника. Замкнув выводы TXD и RXD мы сделаем так, чтобы всё что мы передаём на COM-порт, возвращалось нам обратно. Поэтому когда мы подключимся терминалом к нашему виртуальному COM-порту, всё то что мы будем вводить на клавиатуре – будет отображаться на экране. Если введёный текст отобразится на экране – значит драйвера установлены корректно и переходник работает.

При подключении переходника к компьютеру с операционной системой Linux – посмотрим правильно ли определился наш переходник, посмотрим какой файл устройства был создан для виртуального COM-порта и попробуем к нему подключиться.

wakko@radio:~$ dmesg -T
[Tue Mar 08 17:32:31 2019] usb 2-1.4: new full-speed USB device number 122 using ehci-pci
[Tue Mar 08 17:32:31 2019] usb 2-1.4: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
[Tue Mar 08 17:32:31 2019] usb 2-1.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[Tue Mar 08 17:32:31 2019] usb 2-1.4: Product: USB2.0-Serial
[Tue Mar 08 17:32:31 2019] usbcore: registered new interface driver ch341
[Tue Mar 08 17:32:31 2019] usbserial: USB Serial support registered for ch341-uart
[Tue Mar 08 17:32:31 2019] ch341 2-1.4:1.0: ch341-uart converter detected
[Tue Mar 08 17:32:31 2019] usb 2-1.4: ch341-uart converter now attached to ttyUSB0

wakko@radio:~$ lsusb | grep Serial
Bus 002 Device 122: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

wakko@radio:~$ ls -alh /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 2019-03-27 /dev/ttyUSB0

wakko@radio:~$ picocom --baud 115200 /dev/ttyUSB0
picocom v3.1

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

Type [C-a] [C-h] to see available commands
Terminal ready

test

Запустив picocom попробуйте что-нибудь набрать на клавиатуре. Если набранный текст отображается, значит всё хорошо. Для выхода из picocom нажмите на клавиатуре Ctrl+A, а затем Ctrl+Q.

Я советую использовать утилиту picocom вместо minicom по двум причинам: во-первых picocom корректная работа с русскими символами и unicode-консолью, а во-вторых корректная работа с цветами. Использование picocom позволяет нормально пользоваться даже утилитой Midnight Commander, а если запустить mc подключившись через minicom – мы увидим лишь боль (поехавшая псевдографика и некорректное отображение unicode-символов).

Подключение переходника к компьютеру с macOS

После подключения переходника к компьютеру с операционной системой macOS сначала посмотрим какой файл устройства был создан для виртуального COM-порта и попробуем к нему подключиться.

wakko@wakko-imbp:~$ ls -alh /dev/tty.usbserial-*
crw-rw-rw-  1 root  wheel   19,   8 Mar 27 17:42 /dev/tty.usbserial-1420

wakko@wakko-imbp:~$ picocom --baud 115200 /dev/tty.usbserial-1420 --quiet

test

Всё точно так же как и в Linux. picocom под macOS можно установить командой sudo port install picocom, если вы пользуетесь MacPorts или командой brew install picocom, если вы пользуетесь Homebrew .

Подключение переходника к компьютеру с Windows

C подключением переходника к Windows так же сложностей никаких быть не должно. Открываем страницу с официальными драйверами, скачиваем файл CH341SER.zip, распаковываем архив, загружаем инсталлятор из архива и устанавливаем драйвер. После этого подключаем переходник и из командной строки запускаем диспетчер устройств командой devmgmt.msc.

В разделе Порты COM и LPT диспетчера устройств смотрим какой номер COM-порта присвоен переходнику. В моём случае это COM7. Открываем свойства устройства USB-SERIAL CH340, открываем вкладку Параметры порта и устанавливаем скорость порта 115200 бит в секунду.

Далее запускаем PuTTY, выбираем тип подключения Serial, указываем наш порт для подключения COM7 и скорость порта 115200, после чего нажимаем на кнопку Open. После подключения в окне PuTTY вводим любой текст и удостоверяемся в том, что подключение работает.

Подключение к консоли NanoPi NEO2

Убевшись что переходник работает – щёлкаем выключатель в положение off, подключаем его к NanoPi NEO2, запускаем программу терминал (picocom или PuTTY) и – щёлкаем обратно выключатель в положение on.

wakko@radio:~$ picocom --baud 115200 /dev/ttyUSB0 --quiet

U-Boot SPL 2017.11 (Oct 11 2018 - 15:51:54)
DRAM: 1024 MiB(504MHz)
CPU Freq: 408MHz
memory test: 1
Pattern 55aa  Writing...Reading...OK
Trying to boot from MMC1
Boot device: sd
NOTICE:  BL3-1: Running on H5 (1718) in SRAM A2 (@0x44000)
NOTICE:  Configuring SPC Controller
NOTICE:  BL3-1: v1.0(debug):0fc0ec6
NOTICE:  BL3-1: Built : 10:41:01, Dec 13 2017
INFO:    BL3-1: Initializing runtime services
INFO:    BL3-1: Preparing for EL3 exit to normal world
INFO:    BL3-1: Next image address: 0x4a000000, SPSR: 0x3c9

U-Boot 2017.11 (Oct 11 2018 - 15:51:54 +0800) Allwinner Technology

CPU:   Allwinner H5 (SUN50I)
Model: FriendlyElec NanoPi H5
DRAM:  1 GiB
CPU Freq: 1008MHz
MMC:   SUNXI SD/MMC: 0, SUNXI SD/MMC: 1
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
BOARD: nanopi-neo2-v1.1
starting USB...
No controllers found
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
reading /boot.scr
1191 bytes read in 19 ms (60.5 KiB/s)
## Executing script at 4fc00000
reading Image
13727752 bytes read in 609 ms (21.5 MiB/s)
reading rootfs.cpio.gz
4508371 bytes read in 215 ms (20 MiB/s)
reading sun50i-h5-nanopi-neo2.dtb
32792 bytes read in 27 ms (1.2 MiB/s)
reading overlays/sun50i-h5-gpio-dvfs-overlay.dtb
1085 bytes read in 31 ms (34.2 KiB/s)
## Flattened Device Tree blob at 48000000
   Booting using the fdt blob at 0x48000000
   Loading Ramdisk to 49b00000, end 4a000000 ... OK
   reserving fdt memory region: addr=48000000 size=11000
   Loading Device Tree to 0000000049aec000, end 0000000049afffff ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.52 (root@wwd) (gcc version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)) #1 SMP Thu Oct 11 15:51:48 CST 2018
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] Machine model: FriendlyElec NanoPi-NEO2
[    0.000000] cma: Reserved 64 MiB at 0x000000007c000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv0.2 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] percpu: Embedded 21 pages/cpu @ffff80003bf72000 s46232 r8192 d31592 u86016
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
[    0.000000] Kernel command line: console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=yes panic=10 fbcon=map:0
[    0.000000] log_buf_len individual max cpu contribution: 4096 bytes
[    0.000000] log_buf_len total cpu_extra contributions: 12288 bytes
[    0.000000] log_buf_len min size: 16384 bytes
[    0.000000] log_buf_len: 32768 bytes
[    0.000000] early log buf free: 14828(90%)
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[    0.000000] Memory: 945416K/1048576K available (9022K kernel code, 734K rwdata, 3072K rodata, 512K init, 413K bss, 37624K reserved, 65536K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     modules : 0xffff000000000000 - 0xffff000008000000   (   128 MB)
[    0.000000]     vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000   (129022 GB)
[    0.000000]       .text : 0xffff000008080000 - 0xffff000008950000   (  9024 KB)
[    0.000000]     .rodata : 0xffff000008950000 - 0xffff000008c60000   (  3136 KB)
[    0.000000]       .init : 0xffff000008c60000 - 0xffff000008ce0000   (   512 KB)
[    0.000000]       .data : 0xffff000008ce0000 - 0xffff000008d97808   (   735 KB)
[    0.000000]        .bss : 0xffff000008d97808 - 0xffff000008dfef40   (   414 KB)
[    0.000000]     fixed   : 0xffff7dfffe7fb000 - 0xffff7dfffec00000   (  4116 KB)
[    0.000000]     PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000   (    16 MB)
[    0.000000]     vmemmap : 0xffff7e0000000000 - 0xffff800000000000   (  2048 GB maximum)
[    0.000000]               0xffff7e0000000000 - 0xffff7e0001000000   (    16 MB actual)
[    0.000000]     memory  : 0xffff800000000000 - 0xffff800040000000   (  1024 MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000004] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.000156] Console: colour dummy device 80x25
[    0.000181] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=96000)
[    0.000191] pid_max: default: 32768 minimum: 301
[    0.000285] Security Framework initialized
[    0.000297] AppArmor: AppArmor disabled by boot time parameter
[    0.000344] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[    0.000359] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[    0.001468] ASID allocator initialised with 32768 entries
[    0.001528] Hierarchical SRCU implementation.
[    0.001869] smp: Bringing up secondary CPUs ...
[    0.002912] Detected VIPT I-cache on CPU1
[    0.002967] CPU1: Booted secondary processor [410fd034]
[    0.003640] Detected VIPT I-cache on CPU2
[    0.003665] CPU2: Booted secondary processor [410fd034]
[    0.004331] Detected VIPT I-cache on CPU3
[    0.004353] CPU3: Booted secondary processor [410fd034]
[    0.004406] smp: Brought up 1 node, 4 CPUs
[    0.004424] SMP: Total of 4 processors activated.
[    0.004430] CPU features: detected feature: 32-bit EL0 Support
[    0.004435] CPU features: detected feature: Kernel page table isolation (KPTI)
[    0.007411] CPU: All CPU(s) started at EL2
[    0.007426] alternatives: patching kernel code
[    0.008334] devtmpfs: initialized
[    0.012915] random: get_random_u32 called from bucket_table_alloc+0xf8/0x280 with crng_init=0
[    0.013449] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.013467] futex hash table entries: 1024 (order: 5, 131072 bytes)
[    0.015540] pinctrl core: initialized pinctrl subsystem
[    0.016339] NET: Registered protocol family 16
[    0.017173] cpuidle: using governor menu
[    0.017840] vdso: 2 pages (1 code @ ffff000008956000, 1 data @ ffff000008ce4000)
[    0.017856] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.018724] DMA: preallocated 256 KiB pool for atomic allocations
[    0.018784] Serial: AMBA PL011 UART driver
[    0.029750] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.030570] reg-fixed-voltage gmac-3v3: could not find pctldev for node /soc/pinctrl@01c20800/gmac_power_pin@0, deferring probe
[    0.030915] gpio-regulator gpio-regulator: could not find pctldev for node /soc/pinctrl@01f02c00/regulator_pins@0, deferring probe
[    0.031228] SCSI subsystem initialized
[    0.031381] usbcore: registered new interface driver usbfs
[    0.031417] usbcore: registered new interface driver hub
[    0.031466] usbcore: registered new device driver usb
[    0.031634] media: Linux media interface: v0.10
[    0.031657] Linux video capture interface: v2.00
[    0.031725] pps_core: LinuxPPS API ver. 1 registered
[    0.031731] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.031744] PTP clock support registered
[    0.031968] Advanced Linux Sound Architecture Driver Initialized.
[    0.033060] clocksource: Switched to clocksource arch_sys_counter
[    0.033281] VFS: Disk quotas dquot_6.6.0
[    0.033336] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.033442] FS-Cache: Loaded
[    0.033595] CacheFiles: Loaded
[    0.038533] NET: Registered protocol family 2
[    0.038968] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    0.039037] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)
[    0.039214] TCP: Hash tables configured (established 8192 bind 8192)
[    0.039344] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.039373] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.039544] NET: Registered protocol family 1
[    0.039879] RPC: Registered named UNIX socket transport module.
[    0.039885] RPC: Registered udp transport module.
[    0.039889] RPC: Registered tcp transport module.
[    0.039894] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.040066] Unpacking initramfs...
[    0.234396] Initramfs unpacking failed: junk in compressed archive
[    0.238051] Freeing initrd memory: 5120K
[    0.241928] audit: initializing netlink subsys (disabled)
[    0.242043] audit: type=2000 audit(0.240:1): state=initialized audit_enabled=0 res=1
[    0.242284] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[    0.247638] FS-Cache: Netfs 'nfs' registered for caching
[    0.248044] NFS: Registering the id_resolver key type
[    0.248069] Key type id_resolver registered
[    0.248074] Key type id_legacy registered
[    0.248087] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.248093] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[    0.252751] NET: Registered protocol family 38
[    0.252985] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.253109] io scheduler noop registered
[    0.253115] io scheduler deadline registered
[    0.253294] io scheduler cfq registered (default)
[    0.253299] io scheduler mq-deadline registered
[    0.253304] io scheduler kyber registered
[    0.253796] sun4i-usb-phy 1c19400.phy: Could not request ID GPIO, pinctrl may not init
[    0.255364] sun8i-h3-r-pinctrl 1f02c00.pinctrl: initialized sunXi PIO driver
[    0.257913] sun50i-h5-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.263841] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.264781] console [ttyS0] disabled
[    0.284922] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 30, base_baud = 1500000) is a U6_16550A
[    1.058822] console [ttyS0] enabled
[    1.084639] 1c28400.serial: ttyS1 at MMIO 0x1c28400 (irq = 31, base_baud = 1500000) is a U6_16550A
[    1.115767] 1c28800.serial: ttyS2 at MMIO 0x1c28800 (irq = 32, base_baud = 1500000) is a U6_16550A
[    1.146937] 1c28c00.serial: ttyS3 at MMIO 0x1c28c00 (irq = 33, base_baud = 1500000) is a U6_16550A
[    1.157819] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.164432] [drm] No driver support for vblank timestamp query.
[    1.177265] sun4i-drm display-engine: bound 1100000.mixer (ops sun8i_mixer_ops)
[    1.184740] sun4i-drm display-engine: No panel or bridge found... RGB output disabled
[    1.192570] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops sun4i_tcon_ops)
[    1.321116] sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy)
[    1.330864] sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver
[    1.338508] sun4i-drm display-engine: bound 1ee0000.hdmi (ops sun8i_dw_hdmi_ops)
[    1.345939] [drm] Cannot find any crtc or sizes - going 1920x1080
[    1.387284] Console: switching to colour frame buffer device 240x67
[    1.420594] sun4i-drm display-engine: fb0:  frame buffer device
[    1.426836] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[    1.435457] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    1.445464] loop: module loaded
[    1.450265] libphy: Fixed MDIO Bus: probed
[    1.454945] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
[    1.461187] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.467713] ehci-platform: EHCI generic platform driver
[    1.473071] ehci-platform 1c1a000.usb: EHCI Host Controller
[    1.478656] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1
[    1.486741] ehci-platform 1c1a000.usb: irq 12, io mem 0x01c1a000
[    1.505069] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
[    1.511753] hub 1-0:1.0: USB hub found
[    1.515542] hub 1-0:1.0: 1 port detected
[    1.520012] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.526231] ohci-platform: OHCI generic platform driver
[    1.531609] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
[    1.538233] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2
[    1.546153] ohci-platform 1c1a400.usb: irq 13, io mem 0x01c1a400
[    1.613580] hub 2-0:1.0: USB hub found
[    1.617365] hub 2-0:1.0: 1 port detected
[    1.621867] usbcore: registered new interface driver uas
[    1.627241] usbcore: registered new interface driver usb-storage
[    1.633714] mousedev: PS/2 mouse device common for all mice
[    1.639645] sun6i-rtc 1f00000.rtc: rtc core: registered rtc-sun6i as rtc0
[    1.646433] sun6i-rtc 1f00000.rtc: RTC enabled
[    1.650918] i2c /dev entries driver
[    1.655663] lirc_dev: IR Remote Control driver registered, major 244
[    1.662018] IR NEC protocol handler initialized
[    1.666546] IR RC5(x/sz) protocol handler initialized
[    1.671594] IR RC6 protocol handler initialized
[    1.676121] IR JVC protocol handler initialized
[    1.680649] IR Sony protocol handler initialized
[    1.685264] IR SANYO protocol handler initialized
[    1.689964] IR Sharp protocol handler initialized
[    1.694665] IR MCE Keyboard/mouse protocol handler initialized
[    1.700491] IR LIRC bridge handler initialized
[    1.704933] IR XMP protocol handler initialized
[    1.709509] usbcore: registered new interface driver ati_remote
[    1.715531] usbcore: registered new interface driver imon
[    1.720958] usbcore: registered new interface driver mceusb
[    1.726561] usbcore: registered new interface driver redrat3
[    1.732257] usbcore: registered new interface driver streamzap
[    1.738174] usbcore: registered new interface driver igorplugusb
[    1.744202] usbcore: registered new interface driver iguanair
[    1.749966] usbcore: registered new interface driver ttusbir
[    1.756170] thermal thermal_zone0: failed to read out thermal zone (-16)
[    1.763214] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[    1.771506] sdhci: Secure Digital Host Controller Interface driver
[    1.777685] sdhci: Copyright(c) Pierre Ossman
[    1.782062] Synopsys Designware Multimedia Card Interface Driver
[    1.789144] sunxi-mmc 1c0f000.mmc: Got CD GPIO
[    1.833206] sunxi-mmc 1c0f000.mmc: base:0xffff000008e55000 irq:10
[    1.839490] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.845753] ledtrig-cpu: registered to indicate activity on CPUs
[    1.851973] hidraw: raw HID events driver (C) Jiri Kosina
[    1.857568] usbcore: registered new interface driver usbhid
[    1.863145] usbhid: USB HID core driver
[    1.879617] sun4i-codec 1c22c00.codec: Codec <-> 1c22c00.codec mapping ok
[    1.888174] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.893843] NET: Registered protocol family 10
[    1.910408] Segment Routing with IPv6
[    1.914157] NET: Registered protocol family 17
[    1.918928] 9pnet: Installing 9P2000 support
[    1.923252] Key type dns_resolver registered
[    1.928120] registered taskstats version 1
[    1.937664] Key type encrypted registered
[    1.947900] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
[    1.953776] dwmac-sun8i 1c30000.ethernet: Will use external PHY
[    1.967731] mmc0: host does not support reading read-only switch, assuming write-enable
[    1.980546] mmc0: new high speed SDHC card at address aaaa
[    1.986436] mmcblk0: mmc0:aaaa SM32G 29.7 GiB 
[    1.992188]  mmcblk0: p1 p2
[    2.065228] dwmac-sun8i 1c30000.ethernet: Chain mode enabled
[    2.070888] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supported
[    2.078109] dwmac-sun8i 1c30000.ethernet: Normal descriptors
[    2.083764] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supported
[    2.090981] dwmac-sun8i 1c30000.ethernet: COE Type 2
[    2.095944] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported
[    2.102800] libphy: stmmac: probed
[    2.110279] ehci-platform 1c1b000.usb: EHCI Host Controller
[    2.115881] ehci-platform 1c1b000.usb: new USB bus registered, assigned bus number 3
[    2.123993] ehci-platform 1c1b000.usb: irq 14, io mem 0x01c1b000
[    2.145066] ehci-platform 1c1b000.usb: USB 2.0 started, EHCI 1.00
[    2.151697] hub 3-0:1.0: USB hub found
[    2.155472] hub 3-0:1.0: 1 port detected
[    2.159978] ehci-platform 1c1c000.usb: EHCI Host Controller
[    2.165568] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 4
[    2.173535] ehci-platform 1c1c000.usb: irq 16, io mem 0x01c1c000
[    2.193067] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00
[    2.199628] hub 4-0:1.0: USB hub found
[    2.203400] hub 4-0:1.0: 1 port detected
[    2.207849] ehci-platform 1c1d000.usb: EHCI Host Controller
[    2.213432] ehci-platform 1c1d000.usb: new USB bus registered, assigned bus number 5
[    2.221391] ehci-platform 1c1d000.usb: irq 18, io mem 0x01c1d000
[    2.241071] ehci-platform 1c1d000.usb: USB 2.0 started, EHCI 1.00
[    2.247593] hub 5-0:1.0: USB hub found
[    2.251366] hub 5-0:1.0: 1 port detected
[    2.255787] ohci-platform 1c1b400.usb: Generic Platform OHCI controller
[    2.262412] ohci-platform 1c1b400.usb: new USB bus registered, assigned bus number 6
[    2.270366] ohci-platform 1c1b400.usb: irq 15, io mem 0x01c1b400
[    2.337532] hub 6-0:1.0: USB hub found
[    2.341310] hub 6-0:1.0: 1 port detected
[    2.345755] ohci-platform 1c1c400.usb: Generic Platform OHCI controller
[    2.352378] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 7
[    2.360375] ohci-platform 1c1c400.usb: irq 17, io mem 0x01c1c400
[    2.429540] hub 7-0:1.0: USB hub found
[    2.433314] hub 7-0:1.0: 1 port detected
[    2.437775] ohci-platform 1c1d400.usb: Generic Platform OHCI controller
[    2.444399] ohci-platform 1c1d400.usb: new USB bus registered, assigned bus number 8
[    2.452372] ohci-platform 1c1d400.usb: irq 19, io mem 0x01c1d400
[    2.521506] hub 8-0:1.0: USB hub found
[    2.525279] hub 8-0:1.0: 1 port detected
[    2.529735] usb_phy_generic usb_phy_generic.3.auto: usb_phy_generic.3.auto supply vcc not found, using dummy regulator
[    2.540680] musb-hdrc musb-hdrc.4.auto: MUSB HDRC host driver
[    2.546431] musb-hdrc musb-hdrc.4.auto: new USB bus registered, assigned bus number 9
[    2.554703] hub 9-0:1.0: USB hub found
[    2.558483] hub 9-0:1.0: 1 port detected
[    2.565222] input: r-gpio-keys as /devices/platform/r-gpio-keys/input/input0
[    2.572669] usb0-vbus: disabling
[    2.575909] ALSA device list:
[    2.578875]   #0: Dummy 1
[    2.581497]   #1: Loopback 1
[    2.584371]   #2: H3 Audio Codec
[    2.588183] Freeing unused kernel memory: 512K
Loading, please wait...
starting version 229
[    2.658372] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    2.661821] random: udevadm: uninitialized urandom read (16 bytes read)
[    2.661978] random: udevadm: uninitialized urandom read (16 bytes read)
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Will now check root file system ... fsck from util-linux 2.27.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p2] fsck.ext4 -y -C0 /dev/mmcblk0p2 
e2fsck 1.42.13 (17-May-2015)
rootfs: clean, 69917/1896000 files, 648349/7760000 blocks (check after next mount)
[    3.190212] random: fast init done
done.
[    3.215784] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    3.239402] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
[    3.658236] systemd[1]: System time before build time, advancing clock.
[    3.780992] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN)
[    3.799296] systemd[1]: Detected architecture arm64.

Welcome to Ubuntu 16.04.6 LTS!

[    3.823527] systemd[1]: Set hostname to <NanoPi-NEO2>.
[    4.207253] systemd[1]: Listening on Journal Audit Socket.
[  OK  ] Listening on Journal Audit Socket.
[    4.227141] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  OK  ] Started Forward Password Requests to Wall Directory Watch.
[    4.245270] systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
[    4.262480] systemd[1]: Created slice System Slice.
[  OK  ] Created slice System Slice.
[    4.279249] systemd[1]: Starting Set console keymap...
         Starting Set console keymap...
[    4.297829] systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
         Mounting Debug File System...
[  OK  ] Listening on Journal Socket (/dev/log).
         Mounting POSIX Message Queue File System...
[  OK  ] Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Reached target Encrypted Volumes.
         Starting Remount Root and Kernel File Systems...
[  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
[  OK  ] Reached target Paths.
         Starting Load Kernel Modules...
[  OK  ] Created slice system-serial\x2dgetty.slice.
[  OK  ] Created slice system-spyserver.slice.
[  OK  ] Set up automount Arbitrary Executab...ats File System Automount Point.
[  OK  ] [    4.516202] Mass Storage Function, version: 2009/09/11
Created slice User and Session Slice.
[    4.521636] LUN: removable file: (no medium)
[    4.529381] LUN: file: /dev/mmcblk0p1
[    4.533070] Number of LUNs=1
[  OK  [    4.536098] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
] Reached target Slices.
[    4.544528] g_mass_storage gadget: userspace failed to provide iSerialNumber
[    4.553811] g_mass_storage gadget: g_mass_storage ready
[  OK  ] Listening on udev Kernel Socket.
         Mounting Huge Pages File System...
         Starting Create list of required st... nodes for the current kernel...
         Starting Journal Service...
[  OK  ] Reached target Remote File Systems (Pre).
[  OK  ] Reached target Remote File Systems.
[  OK  ] Mounted Debug File System.
[  OK  ] Mounted POSIX Message Queue File System.
[  OK  ] Mounted Huge Pages File System.
[  OK  ] Started Set console keymap.
[  OK  ] Started Remount Root and Kernel File Systems.
[  OK  ] Started Load Kernel Modules.
[  OK  ] Started Create list of required sta...ce nodes for the current kernel.
[  OK  ] Started Journal Service.
         Starting Create Static Device Nodes in /dev...
         Starting Apply Kernel Variables...
         Mounting Configuration File System...
         Activating swap /mnt/512MB.swap...
         Starting Flush Journal to Persistent Storage...
         Starting udev Coldplug all Devices...
         Starting Load/Save Random Seed...
[  OK  ] Mounted Configuration File System.
[  OK  ] Started Apply Kernel Variables.
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Create Static Device Nodes in /dev.
[  OK  ] Activated swap /mnt/512MB.swap.
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Reached target Swap.
         Starting udev Kernel Device Manager...
[  OK  ] Reached target Local File Systems (Pre).
[  OK  ] Started udev Coldplug all Devices.
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Reached target Sound Card.
[  OK  ] Found device /dev/ttyS0.
[  OK  ] Found device /dev/mmcblk0p1.
         Mounting /boot...
[  OK  ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
[  OK  ] Mounted /boot.
[  OK  ] Reached target Local File Systems.
         Starting Raise network interfaces...
         Starting Set console font and keymap...
         Starting Create Volatile Files and Directories...
[  OK  ] Started Create Volatile Files and Directories.
         Starting Update UTMP about System Boot/Shutdown...
         Starting Network Time Synchronization...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Synchronized.
[  OK  ] Reached target System Initialization.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Started Daily apt download activities.
[  OK  ] Started Daily apt upgrade and clean activities.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target Timers.
[  OK  ] Reached target Basic System.
         Starting Restore /etc/resolv.conf i...re the ppp link was shut down...
         Starting LSB: Start busybox udhcpd at boot time...
         Starting Permit User Sessions...
         Starting Login Service...
         Starting LSB: select system audio output at first boot...
         Starting LSB: Set the CPU Frequency Scaling governor to "ondemand"...
         Starting Modem Manager...
         Starting brcm_patchram_plus...
         Starting Save/Restore Sound Card State...
[  OK  ] Started D-Bus System Message Bus.
         Starting Network Manager...
[  OK  ] Started Set console font and keymap.
[  OK  ] Started Restore /etc/resolv.conf if...fore the ppp link was shut down.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started LSB: select system audio output at first boot.
[  OK  ] Started brcm_patchram_plus.
[  OK  ] Started Save/Restore Sound Card State.
[  OK  ] Started Raise network interfaces.
[  OK  ] Started LSB: Start busybox udhcpd at boot time.
[  OK  ] Started LSB: Set the CPU Frequency Scaling governor to "ondemand".
[  OK  ] Started Login Service.
         Starting Authenticate and Authorize Users to Run Privileged Tasks...
         Starting Set console scheme...
[  OK  ] Created slice system-getty.slice.
[  OK  ] Started Set console scheme.
[  OK  ] Started Authenticate and Authorize Users to Run Privileged Tasks.
[  OK  ] Started Network Manager.
         Starting Network Manager Script Dispatcher Service...
         Starting Network Manager Wait Online...
[  OK  ] Reached target Network.
         Starting OpenBSD Secure Shell server...
[  OK  ] Started Network Manager Script Dispatcher Service.
         Starting Hostname Service...
[  OK  ] Started Modem Manager.
[  OK  ] Started Hostname Service.
[  OK  ] Started OpenBSD Secure Shell server.
[  OK  ] Started Network Manager Wait Online.
[  OK  ] Reached target Network is Online.
         Starting LSB: Advanced IEEE 802.11 management daemon...
         Starting /etc/rc.local Compatibility...
         Starting LSB: disk temperature monitoring daemon...
[  OK  ] Started Spy Server.
[    8.368710] rc.local[551]: ctp = 0
[  OK  ] Started LSB: disk temperature monitoring daemon.
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttyS0.
[  OK  ] Reached target Login Prompts.
[  OK  ] Started LSB: Advanced IEEE 802.11 management daemon.
[  OK  ] Reached target Multi-User System.
[  OK  ] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[  OK  ] Started Update UTMP about System Runlevel Changes.
[  OK  ] Created slice User Slice of wakko.
         Starting User Manager for UID 1000...
[  OK  ] Started Session 1 of user wakko.
[  OK  ] Started User Manager for UID 1000.

Ubuntu 16.04.6 LTS NanoPi-NEO2 ttyS0

NanoPi-NEO2 login: wakko (automatic login)

Last login: Mon Mar 08 19:06:03 MSK 2019
 _____     _                _ _       _____ _     _____ ____ 
|  ___| __(_) ___ _ __   __| | |_   _| ____| |   | ____/ ___|
| |_ | '__| |/ _ \ '_ \ / _` | | | | |  _| | |   |  _|| |    
|  _|| |  | |  __/ | | | (_| | | |_| | |___| |___| |__| |___ 
|_|  |_|  |_|\___|_| |_|\__,_|_|\__, |_____|_____|_____\____|
                                |___/                        

Welcome to Ubuntu 16.04.6 LTS 4.14.52
System load:   0.08             Up time:       10 sec       
Memory usage:  4 % of 992Mb     IP:            
CPU temp:      14°C             
Usage of /:    7% of 30G        

 * Documentation: http://wiki.friendlyarm.com/Ubuntu
 * Forum: http://www.friendlyarm.com/Forum/

wakko@NanoPi-NEO2:~$

Как видим, всё получилось, мы успешно подключились к консоли NanoPi NEO2 через консольный порт для отладки.

Облагораживание консоли

Если Вы настраивали рабочее окружение bash по этой заметке, то этот раздел можно пропустить – консоль уже будет цветной, все необходимые изменения уже внесены в файлы ~./config/bashrc.d/02-terminal и ~/.config/bashrc.d/06-serial.

Как видно на скриншоте, picocom способен отображать различные цвета, но сама консоль у нас чёрно-белая. Это видно по строке приглашения.

Если мы запустим Midnight Commander – он так же будет во-первых чёрно-белым, а во-вторых не на весь экран.

Для начала добавим цветов консоли. Цвета в консоли автоматически включаются при подключении с переменной TERM=xterm-color|*-256color, сделаем так, чтобы TERM=vt220 так же считалась цветной:

wakko@NanoPi-NEO2:~$ nano -w ~/.bashrc
@@ -12,6 +12,7 @@
 # set a fancy prompt (non-color, unless we know we "want" color)
 case "$TERM" in
     xterm-color|*-256color) color_prompt=yes;;
+    vt220) color_prompt=yes;
 esac

Этого исправления достаточно для того, чтобы строка приглашения стала цветной, но не достаточно для того, чтобы раскрасился Midnight Commander и вывод команды ls. Для того, чтобы раскрасить вывод команды ls и Midnight Commander добавим в файл ~/.bashrc следующие строки:

res() {
    old=$(stty -g)
    stty raw -echo min 0 time 5

    printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty
    IFS='[;R' read -r _ rows cols _ < /dev/tty

    stty "$old"
    stty cols "$cols" rows "$rows"
}

res2() {
    old=$(stty -g)
    stty raw -echo min 0 time 5

    printf '\033[18t' > /dev/tty
    IFS=';t' read -r _ rows cols _ < /dev/tty

    stty "$old"
    stty cols "$cols" rows "$rows"
}

TTY=$(tty)
TMP=${TTY:5}

if [[ "$TMP" == "ttyS"* ]]; then
    eval "$(TERM=linux dircolors -b)"
    unalias mc >/dev/null
    unalias mcdiff >/dev/null
    unalias mcedit >/dev/null
    unalias mcview >/dev/null
    alias mc='TERM=xterm mc --color -S default'
    alias mcdiff='TERM=xterm mcdiff --color -S default'
    alias mcedit='TERM=xterm mcedit --color -S default'
    alias mcview='TERM=xterm mcview --color -S default'

    res
fi

Опишу в двух словах чего мы добились этим скриптом:

  • Заставили команду dircolors думать что у нас цветной терминал, и поэтому в переменную окружения LS_COLORS запишутся цвета для раскраски вывода команды ls;
  • Заставили Midnight Commander думать что у нас цветной терминал, так же принудительно включили дефолтный скин. Т.к. если у вас в нормальной жизни выбран 256-цветный скин в mc, например xoria256, то при каждом запуске mc мы бы получали ругань вида Невозможно использовать скин xoria256, требующий 256 цветов, на терминале, не поддерживающем 256 цветов. Будет использован скин по умолчанию. А переменную TERM=xterm для Midnight Commander мы устанавливаем для того, чтобы корректно работали клавиши Home/End, Alt+Arrows и прочие.
  • Функции res() и res2() выполняют по сути одно и то же, только записаны по-разному. Когда мы подключаемся по ssh к удалённому компьютеру, мы с клиента передаём значение переменных COLUMNS и LINES, которые содержат реальные значение размера окна нашего терминала. Поэтому, Midnight Commander корректно открывается на весь экран при подключении по ssh. При подключении через COM-порт этим переменным присваиваются стандартные значения COLUMNS=80 и LINES=24. Поэтому Midnight Commander открывается в кривом размере. Для того чтобы этого избежать, функции res() и res2() экспериментально вычисляют размер окна терминала и записывают корректные значения в переменные COLUMNS и LINES. Поэтому после того как вы вручную измените размер окна терминала (мышкой измените размер окна PuTTY, например) – нужно вручную запустить команду res или res2.

Для того, чтобы применить все эти изменения – достаточно нажать Ctrl+D, для того, чтобы перелогиниться.

Итоговый вариант получился примерно такой:

Вывод в консоль при выключении NanoPi NEO2

Если послать команду poweroff, то вывод команды в консоль будет таким:

wakko@NanoPi-NEO2:~$ sudo poweroff 
[  OK  ] Stopped target Sound Card.
         Stopping Save/Restore Sound Card State...
         Stopping Session 1 of user wakko.
[  OK  ] Stopped target Graphical Interface.
[  OK  ] Stopped target Multi-User System.
         Stopping brcm_patchram_plus...
         Stopping Modem Manager...
         Stopping LSB: Set the CPU Frequency Scaling governor to "ondemand"...
         Stopping LSB: disk temperature monitoring daemon..
         Stopping Session 24 of user wakko.
         Stopping Authenticate and Authorize Users to Run Privileged Tasks...
[  OK  ] Stopped target Login Prompts.
         Stopping Serial Getty on ttyS0...
         Stopping LSB: Advanced IEEE 802.11 management daemon...
         Stopping OpenBSD Secure Shell server...
         Stopping Getty on tty1...
         Stopping User Manager for UID 1000...
[  OK  ] Closed Load/Save RF Kill Switch Status /dev/rfkill Watch.
         Stopping LSB: select system audio output at first boot...
[  OK  ] Stopped target Timers.
[  OK  ] Stopped Daily Cleanup of Temporary Directories.
[  OK  ] Stopped Daily apt upgrade and clean activities.
[  OK  ] Stopped Daily apt download activities.
[  OK  ] Stopped target System Time Synchronized.
[  OK  ] Stopped Modem Manager.
[  OK  ] Stopped Authenticate and Authorize Users to Run Privileged Tasks.
[  OK  ] Stopped OpenBSD Secure Shell server.
[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped User Manager for UID 1000.
[  OK  ] Stopped Serial Getty on ttyS0.
[  OK  ] Stopped Save/Restore Sound Card State.
[  OK  ] Stopped Session 1 of user wakko.
[  OK  ] Stopped brcm_patchram_plus.
[  OK  ] Stopped Session 24 of user wakko.
[  OK  ] Stopped LSB: select system audio output at first boot.
[  OK  ] Stopped LSB: Set the CPU Frequency Scaling governor to "ondemand".
[  OK  ] Stopped LSB: disk temperature monitoring daemon.
[  OK  ] Stopped LSB: Start busybox udhcpd at boot time.
[  OK  ] Stopped LSB: Advanced IEEE 802.11 management daemon.
[  OK  ] Removed slice system-serial\x2dgetty.slice.
[  OK  ] Removed slice User Slice of wakko.
         Stopping Login Service...
         Stopping Permit User Sessions...
         Stopping /etc/rc.local Compatibility...
[  OK  ] Removed slice system-getty.slice.
[  OK  ] Stopped Login Service.
[  OK  ] Stopped Permit User Sessions.
[  OK  ] Stopped /etc/rc.local Compatibility.
[  OK  ] Stopped target Network is Online.
[  OK  ] Stopped Network Manager Wait Online.
[  OK  ] Stopped target Network.
         Stopping Network Manager...
         Stopping Raise network interfaces...
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped target Remote File Systems (Pre).
[  OK  ] Stopped Network Manager.
         Stopping D-Bus System Message Bus...
[  OK  ] Stopped D-Bus System Message Bus.
[  OK  ] Stopped target Basic System.
[  OK  ] Stopped target Sockets.
[  OK  ] Stopped target Slices.
[  OK  ] Removed slice User and Session Slice.
[  OK  ] Stopped target Paths.
[  OK  ] Stopped Dispatch Password Requests to Console Directory Watch.
[  OK  ] Stopped Forward Password Requests to Wall Directory Watch.
[  OK  ] Closed D-Bus System Message Bus Socket.
[  OK  ] Stopped target System Initialization.
         Stopping Network Time Synchronization...
[  OK  ] Stopped target Encrypted Volumes.
         Stopping Load/Save Random Seed...
[  OK  ] Stopped target Swap.
         Deactivating swap /mnt/512MB.swap...
[  OK  ] Stopped Network Time Synchronization.
[  OK  ] Stopped Raise network interfaces.
[  OK  ] Stopped Load/Save Random Seed.
[  OK  ] Deactivated swap /mnt/512MB.swap.
[  OK  ] Stopped Apply Kernel Variables.
[  OK  ] Stopped Load Kernel Modules.
[  OK  ] Stopped Create Volatile Files and Directories.
[  OK  ] Stopped target Local File Systems.
         Unmounting /run/user/1000...
         Unmounting /boot...
[  OK  ] Unmounted /boot.
[  OK  ] Unmounted /run/user/1000.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped target Local File Systems (Pre).
[  OK  ] Stopped Create Static Device Nodes in /dev.
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Reached target Shutdown.
[19333.164040] reboot: Power down
INFO:    PSCI Affinity Map:
INFO:      AffInst: Level 0, MPID 0x0, State ON
INFO:      AffInst: Level 0, MPID 0x1, State ON
INFO:      AffInst: Level 0, MPID 0x2, State ON
INFO:      AffInst: Level 0, MPID 0x3, State ON
ERROR:   PSCI system shutdown: still alive ...

При чём сам компьютер NanoPi NEO2 отключается, а вот на шляпе NanoHat OLED продолжает гореть остановившееся текущее время.

Другие варианты переходников

Были в наличии ещё такие переходники:

  • 6-пиновый кабель с чипом FTDI FT232RL (слева на первой фотографии). Хороший переходник, но для нашей задачи не подходит, т.к. с подключенным кабелем не надеть шляпу NanoHat OLED.
  • 4-пиновый кабель с чипом Prolific PL2303HX (справа на первой фотографии). Переходник с проблемными драйверами под Windows 10, не подходит по той же причине что и предыдущий.
  • USB to TTL модуль от iTead с чипом Prolific PL2303HX (на средней фотографии). Переходник аналогичный USB2UART, единственная загвоздка в том, что он работает с TTL-уровнями 5V, а в NanoPi NEO2 они 3.3V, т.е. нам такой не подходит.
  • HC06 Serial Bluetooth модуль iTead (на правой фотографии). Этот модуль вроде как должен подойти, но руки до него пока не дошли.

Следующая запись Предыдущая запись