2023-12-31
md
Conversion d'un autre boîtier TV avec Amlogic S192 en appareil Linux - I
<-Turning an Amlogic S192 Android TV Box Into a Linux Appliance
 Installation d'Armbian (bookworm) sur un TX9 Pro contrefait, 
 un boîtier TV Amlogic S912 quelque peu décevant 

Lorsque j'ai dégradé un boîtier TV Alfawise S92 en écrasant accidentellement Android sur sa mémoire flash eMMC, je me suis précipité pour le remplacer. J'ai opté pour un autre boîtier semblable basé sur le même processeur Amlogic S912. Cependant il était beaucoup moins cher. Or vous en avez pour votre argent... ou moins. Une version altérée de Kodi était préinstallée et fonctionnait. Les vidéos sur Amazon Prime pouvaient probablement être lues, mais Netflix ne fonctionnait certainement pas à une résolution de 1080p ; et peut-être pas du tout, je ne m'en souviens pas. L'utilisation des boîtiers Android TV bon marché est trop frustrante et, conséquemment, le nouveau boîtier TV n’a pratiquement jamais été utilisé. Néanmoins, j'ai acheté, il y a deux semaines, un troisième boîtier d'une nouvelle génération qui devrait être plus puisant, ce qui signifiait que la conversion du deuxième en un appareil Linux pouvait être tentée.

Ce billet sera le premier de deux consacrés à l'installation du système d'exploitation Armbian sur cet appareil. Dans cette première version, une image provenant de la Community Support for Amlogic TV Boxes (communauté Armbian des boîtiers TV ) est installée. Dans le deuxième billet, une image du référentiel Armbian for Amlogic TV Boxes par ophub sera installée. Ainsi on pourra voir ce qui différencie ces deux versions d'Armbian.

Table of Content

  1. Connaissez votre boîtier TV
  2. Installation d'Armbian
  3. Port de débogage série
  4. Premier démarrage
  5. Suite

Connaissez votre boîtier TV toc

Le marché des lecteurs multimédias Android est une jungle. Il n’est pas toujours clair ce qui est vendu. Au fil des années, de nombreux fabricants ont proposé de très nombreux modèles de boîtiers TV de qualité variable. Pour compliquer encore les choses, il semble que des produits contrefaits soient proposés par des entreprises peu scrupuleuses. Le boîtier TV qui fait l’objet de cet article en est un bon exemple. Le vendeur, un magasin sur Aliexpress, est toujours en activité, mais il ne propose plus de boîtiers TV Amlogic S912. Cependant, une brève description de l’appareil a été conservée dans mon historique d'achat chez AliExpress.

Order placed on: Dec 13, 2019 Amlogic S912 Android 9.0 TV BOX 3D 4K 2.4G&5.8G Wifi Bluetooth Google Voice Assistant Media player Free Apps Very Fast top Box 2G16G, US Plug, China C$36.99

Comme nous le verrons, cette description n’était pas exacte. Les choses ne se sont guère améliorées depuis 4 ans. Voici une photo de mon appareil à côté de l'image d'un dispositif avec le même logo actuellement proposée par un grossiste sur Alibaba. Le tableau contient la description complète de l'appareil fournie par le vendeur.

top view of tv box
Key attributes
Processor CoreQuad Core
Support Resolution4k
WiFi802.11n 2.4G/5GHz
Other attributes
Model NumberTX9 pro
Operation SystemAndroid 7.1
Featuresandroid tv box
ProcessorAmlogic S905W
Ethernet1 × 10/100MBps
Product NameTX9pro Android Smart Tv Box
ProcessorAmlogic S912
RAM2GB
ROM16GB
CPUS912 Octa-core cortex-A53
Warranty3 years

Apparemment, l'entreprise peut livrer 10 000 unités ou plus à 17,22 $US l'unité. Alors peut-être que le TX95 Pro est demeure disponible, mais que contient cet appareil ? Est-ce qu'il a un processeur Amlogic S905W avec quatre coeurs ou un S912 de huit coeurs ? D'ailleurs, même si l'appareil actuellement disponible chez ce grossiste est basé sur le S912, ce n'est pas exactement le même que mon TX95. Si l’on peut se fier à l’image du constructeur, l’indicateur DEL est tout autre. Il semble que j'ai acheté une « imitation » du Tanix TX9 Pro qui n'est plus fabriqué. La seule différence externe visible est le logo supérieur qui est TX9 Pro au lieux de Tanix. Cependant, le contenu des boîtes diffère considérablement. La description de la machine par le vendeur correspond assez bien au Tanix discontinué, alors qu'en réalité le (faux) TX9 a une radio WiFi qui ne prend en charge que la bande 2,8 GHz, l'Ethernet ne fonctionne qu'à 100 Mb/s et il n'y a pas de capacité Bluetooth. Voici quelques détails supplémentaires.

ModelTX9 PRO (or TX9PRO-P per label on the underside of motherboard)
MotherboardCS_912_TX92_B8_V1.1 20190801
CPUAmlogic S912Xinfo
RAM2 Gbyte with 4 × 512 Mbyte DDR3 K4B4G0846E-BYK0 info
eMMCRayson RSE16TAA-16Ginfo
Wi-FiRealtek RTL8189ETV 802.11bgn 2.4GHzinfo
PowerRT9045GSPinfo
LED driverFD628

L'information suviante a été obtenue avec l'application Android AIDA64 (je conserve soigneusement Android dans la « ROM » pour le moment).

AIDA64 for Android v1.98 Report <<< System >>> Device Model: Tanix TX9 Pro Device Type: TV Box Manufacturer: Amlogic Model: TX9 Pro Brand: Amlogic Board: q201 Device: q201 Hardware: amlogic Platform: gxm Product: q201 Installed RAM: 2 GB Total Memory: 1768 MB Available Memory: 573 MB Internal Storage Total Space: 11.24 GB Internal Storage Free Space: 6101 MB <<< CPU >>> SoC Model: AMLogic S912 Core Architecture: 8x ARM Cortex-A53 @ 1000 MHz Manufacturing Process: 28 nm Instruction Set: 64-bit ARMv8-A (32-bit Mode) CPU Revision: r0p4 CPU Cores: 8 CPU Clock Range: 100 - 1512 MHz Core 1 Clock: 1200 MHz Core 2 Clock: 1200 MHz Core 3 Clock: 1200 MHz Core 4 Clock: 1512 MHz Core 5 Clock: 1000 MHz Core 6 Clock: 1000 MHz Core 7 Clock: 1000 MHz Core 8 Clock: 1000 MHz CPU Utilization: 14 % L2 Cache: 512 KB Scaling Governor: interactive Supported ABIs: armeabi-v7a, armeabi Supported 32-bit ABIs: armeabi-v7a, armeabi AES: Supported ASIMD/NEON: Supported PMULL: Supported SHA1: Supported SHA2: Supported <<< Display >>> Screen Resolution: 1920 × 1080 xdpi / ydpi: 30 / 30 dpi GPU Vendor: ARM GPU Renderer: Mali-T820 GPU Cores: 3 Refresh Rate: 60 Hz Default Orientation: Landscape OpenGL ES Version: 3.0 GPU Version: OpenGL ES 3.0 r16p0-00rel0.7fb0319.5cd653ef10a8dffb3fe634024e9eda82 OpenGL ES Extensions: GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex <<< Wi-Fi >>> State: Enabled SSID: xxxxxxxxxxxxxxxx BSSID: xxxxxxxxxxxxxxxxxxx Hidden SSID: No IPv4 Address: xxx.xxx.xxx.xxx IPv6 Address: fexx::xxxx:xxxx:xxxx:xxxx Signal Strength: -46 dBm (Excellent) Link Speed: 150 Mbps Frequency: 2437 MHz Network ID: 0 Gateway: xxx.xxx.xxx.xxx Netmask: xxx.xxx.xxx.xxx DNS1: xxx.xxx.xxx.xxx DHCP Lease Duration: 72 hours 5 GHz Band: Not Supported Wi-Fi Aware: Not Supported Wi-Fi Direct: Supported <<< Android >>> Android Version: 7.1.2 (Nougat) API Level: 25 Android Security Patch Level: 2017-12-01 Rooted Device: Yes Android ID: da86578e09f0ac2c Build ID: q201-userdebug 7.1.2 NHG47L 20190923 test-keys Codename: REL Fingerprint: Amlogic/q201/q201:7.1.2/NHG47L/20190923:userdebug/test-keys ID: NHG47L Incremental: 20190923

Une grande partie de ces données ont été collectées après l'installation d'Armbian, mais il aurait été préférable de le faire avant.

Installation d'Armbian toc

Suivez les instructions d'intallation de la communauté (de SteeMan en fait Installation Instructions for TV Boxes with Amlogic CPUs) et, avec un peu de chance, tout fonctionnera bien. D'ailleurs, obtenir les informations ci-dessus au sujet du boîtier TV a demandé plus de travail que l'installation d'Armbian. Fondamentalement, les étapes à suivre sont les suivantes.

  1. Téléchargez l’image correcte d'Armbian.
  2. Gravez le fichier image sur une bonne carte µSD.
  3. Montez la partition de démarrage.
  4. Configuration de l'image
  5. Placez la carte µSD dans le lecteur SD du boîtier TV et démarrez Armbian.

2.1 Obtenir l'image d'Armbian

Obtenez la dernière version stable des archives de la communauté. En décembre 2023, il s'agissait d'un fichier compressé nommé Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img.xz. Notez qu'il s'agit d'une image « serveur » qui est l'équivalent de Raspberry Pi OS Lite. Il existe des éditions avec environnement bureau que je n'utiliserais pas sur un système aussi peu performant. Il existe aussi une version minimale encore plus petite (Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63_minimal.img.xz) que je n'ai pas étudiée. Serait-ce l'équivalent du script minceur dietpi ?

Le référentiel contient également un fichier texte (Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img.txt) qui reproduit la licence GPL précédée de l'information suivante.

--------------------------------------------------------------------------- Generated with Armbian(tm) build framework https://github.com/armbian/build --------------------------------------------------------------------------- Vendor: Armbian Revision: 23.11.1 Board: Aml-s9xx-box Kernel: Linux 6.1.63 (current) Build date: 30.11.2023 Sources: https://github.com/armbian/build Sources rev: d69350a88 Authors: https://www.armbian.com/authors Maintainer: Armbian Linux Support: https://forum.armbian.com --------------------------------------------------------------------------- Partitioning configuration: msdos offset: 4 Boot partition type: fat (512 MB) Root partition type: ext4 CPU configuration: 500000 - 1536000 with ondemand --------------------------------------------------------------------------- Verify GPG signature: gpg --verify Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img.xz.asc Verify image file integrity: sha256sum --check Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img.xz.sha Prepare SD card (four methods): xzcat Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img.xz | pv | dd of=/dev/mmcblkX bs=1M dd if=Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img of=/dev/mmcblkX bs=1M balena-etcher Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img.xz -d /dev/mmcblkX balena-etcher Armbian_23.11.1_Aml-s9xx-box_bookworm_current_6.1.63.img -d /dev/mmcblkX ---------------------------------------------------------------------------

Comme expliqué, il y a deux autres fichiers qui devraient être utilisés pour vérifier l'intégrité du fichier image compressé téléchargé.

2.2 Graver le fichier image sur une carte Micro SD

J'ai utilisé Etcher de balena pour copier le fichier image sur une carte µSD de bonne qualité. Il existe de nombreux tutoriels sur le Web expliquant comment procéder. Mon site en contient, mais ils sont probablement déjà désuets.

Il faut s'assurer de la bonne qualité de la carte SD. J'ai certainement appris ma leçon à ce sujet et je ne perdrai plus de temps avec des cartes douteuses. Cela dit, j'ai utilisé sans problème une carte µSD de provenance inconnue de 8 Go avec laquelle j'avais eu du succès auparavant.

2.3 Monter la partition de démarrage

Les informations supplémentaires indiquaient que l'image contient deux partitions à l'instar du système d'exploitation Raspberry Pi. Ainsi, la première partition de « démarrage » est de type FAT qui peut être modifié avec la plupart des ordinateurs capables de lire une carte SD. Le système d'exploitation Linux sur mon bureau a monté les deux partitions (armbi_boot et armbi_root) dès qu'Etcher a terminé sa tâche. Je soupçonne que sur les systèmes Windows, seule la partition de démarrage serait montée, car ces systèmes d'exploitation ne gèrent pas les partitions EXT4.

Pour continuer, il est nécessaire de modifier des fichiers dans la partition de démarrage. Si la partition de démarrage n'est pas montée, essayez de retirer la carte SD, puis de la réinsérer dans le lecteur de carte SD de l'ordinateur de bureau.

2.4 Modifiez un fichier de configuration file et créez un fichier de chargeur de démarrage selon les instructions.

La première chose à faire est de sélectionner l'image binaire de la bonne arborescence des périphériques, devicetree blob ou dtb, décrivant le matériel du système. C'est un peu la version libre du BIOS du système PC, sans l'interface graphique conviviale pour modifier les paramètres (voir Devicetree sur Wikipédia pour la distinction entre dts et dtb). Le fichier extlinux/extlinux.conf comporte une ligne spécifiant le nom du dtb à utiliser. Voici son contenu par défaut.

LABEL Armbian LINUX /Image INITRD /uInitrd #FDT /dtb/amlogic/meson-gxbb-p200.dtb #FDT /dtb/amlogic/meson-gxl-s905x-p212.dtb FDT /dtb/amlogic/meson-gxl-s905w-tx3-mini.dtb #FDT /dtb/amlogic/meson-gxm-q200.dtb #FDT /dtb/amlogic/meson-g12a-x96-max.dtb #FDT /dtb/amlogic/meson-g12b-odroid-n2.dtb append root=UUID=a6cf29bd-49ae-4d3b-bf22-800408ae1fba rootflags=data=writeback console=ttyAML0,115200n8 console=tty0 rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

Le bon dtb pour mon faux TX95 se nomme meson-gxm-q201.dtb. C'est ainsi que j'ai modifié le fichier avec un éditeur de texte (Geany, mais cela pourrait être autre chose, même nano).

LABEL Armbian LINUX /Image INITRD /uInitrd #FDT /dtb/amlogic/meson-gxbb-p200.dtb #FDT /dtb/amlogic/meson-gxl-s905x-p212.dtb #FDT /dtb/amlogic/meson-gxl-s905w-tx3-mini.dtb #FDT /dtb/amlogic/meson-gxm-q200.dtb FDT /dtb/amlogic/meson-gxm-q201.dtb #FDT /dtb/amlogic/meson-g12a-x96-max.dtb #FDT /dtb/amlogic/meson-g12b-odroid-n2.dtb append root=UUID=a6cf29bd-49ae-4d3b-bf22-800408ae1fba rootflags=data=writeback console=ttyAML0,115200n8 console=tty0 rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

Attention, il ne peut y avoir qu'une ligne FTD dans le fichier, toutes les autres entrées sont en fait des commentaires puisque précédé d'un dièse. Pour terminer il faut configurer le bon chargeur de démarrage. Je l'ai fait depuis un terminal.

michel@hp:~$ cd /media/michel/armbi_boot michel@hp:/media/michel/armbi_boot$ cp u-boot-s905x-s912 u-boot.ext

Bien entendu, la partition de démarrage sera montée ailleurs que /media/michel sur votre système. Si vous utilisez un autre processeur Amlogic, il faut peut-être un autre chargeur de démarrage. Encore une fois, SteeMan est votre guide pour faire le bon choix. Il propose une liste exhaustive des trois chargeurs de démarrage à utiliser en fonction du processeur.

2.5 Démarrez Armbian via la méthode dite du "cure-dent"

Il est toujours préférable de démonter les partitions de la carte SD avant de la retirer du lecteur de l'ordinateur de bureau. Dans Linux, on peut le faire depuis un terminal. Découvrez d’abord où les partitions sont montées, puis démontez chacune d’elles en utilisant son emplacement de périphérique ou son point de montage.

michel@hp:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 931,5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi └─sda2 8:2 0 931G 0 part / ... sde 8:64 1 7,5G 0 disk ├─sde1 8:65 1 512M 0 part /media/michel/armbi_boot └─sde2 8:66 1 6,8G 0 part /media/michel/armbi_root michel@hp:~$ sudo umount /dev/sde1 michel@hp:~$ sudo umount /media/michel/armbi_root

Cela peut être fait facilement et rapidement à partir du navigateur de fichiers de Linux Mint MATE en cliquant sur quelques icônes, un peu comme on le fait dans Windows.

Insérez maintenant la carte µSD dans le lecteur SD du boîtier TV. Il y a un petit trou entre le connecteur SPDIF et le connecteur USB-2 double. C'est ici qu'il faut insérer un cure-dent afin d'appuyer sur le bouton de démarrage sur la carte mère.

boot button

Avant de démarrer le système, il est préférable de connecter le boîtier TV au réseau local avec un câble Ethernet et probablement plus facile de connecter un moniteur ou un téléviseur avec un câble HDMI pour voir ce qui se passe. La connexion d'un clavier USB sera également utile, mais une souris n'est pas nécessaire. Avec le bouton de démarrage enfoncé, allumez le boîtier TV. Maintenez le bouton de démarrage enfoncé pendant quelques secondes. Si tout se passe bien, le boîtier TV démarrera sous Linux à partir de la carte SD. Après un temps considérable, pendant que le système de fichiers est étendu pour occuper tout l'espace disponible sur la carte µSD, l'écran suivant devrait apparaître.

Welcome to Armbian! Documentation: https://docs.armbian.com | Community support: https://forum.armbian.com IP address: 192.168.32.229 Create root password:

Bien sûr, vous n’aurez peut-être pas autant de chance. Peut-être qu'une erreur a été commise lors de la configuration, peut-être que des composants différents ont été utilisés ou qu'une carte mère entièrement différente se trouve dans le boîtier. C’est là qu’il est judicieux d’exécuter au préalable un utilitaire tel que AIDA64 sur Android. Notez qu'on peut toujours récupérer carte µSD du boîtier TV et la réinsérer dans le lecteur SD du bureau pour modifier le fichier extlinux.conf ou changer le chargeur de démarrage. En revanche pour voir ce qui se passe pendant le démarrage, le mieux c'est de se connecter au port de débogage série.

Port de débogage série toc

En théorie, il n'est pas nécessaire de se connecter au port série de débogage. Toutefois, cela peut être très utile si l'on rencontre des problèmes lors de l'installation, surtout si l'on doit essayer plusieurs dtb. Dans mon cas, j'utilise cette connexion, car il n'est pas pratique de brancher un clavier et un moniteur HDMI. Heureusement, il se trouve que le port de débogage est présent sur les deux boîtiers TV basés sur la puce S192 que je possède.

Serial debug port Ouvrir le boîtier TV peut être un peu difficile. Il existe une vidéo YouTube intitulée TANIX TX3 Mini and TX9 Pro Opening Android TV BOX Amlogic S905W and S912 qui montre comment le faire en détail. Il y a quatre vis sous les pieds en caoutchouc. Le segment sur le TX9 Pro commence à 2m50 dans la vidéo de 13 minutes.

Une fois le fond du boîtier retiré, le port série est facilement identifié dans le coin entre le lecteur de carte SD et le connecteur SPDIF. Les signaux TX et RX sont identifiés par des étiquettes à l’envers, mais qu'importe les électrons circulent toujours dans la bonne direction comme diraient des YouTubers bien connus. Utilisez un convertisseur USB vers TTL pour connecter l'ordinateur de bureau au port. Comme d'habitude pour les ports série UART, il faut branché le signal TX d'un appareil au signal RX de l'autre appareil. Ne connectez pas l'alimentation Vcc de l'adaptateur USB-série à la broche 3,3 V de la carte mère. En revanche, il faut relier les masses ensemble. La configuration des plots est parfaite pour un connecteur mâle Dupont à 3 broches. Il n'est pas nécessaire de souder quoi que ce soit et il n'est pas nécessaire de retirer la carte mère du boîtier. Branchez l'adaptateur série USB sur le bureau, recherchez le périphérique créé (typiquement ttyUSBx sur Linux et COMx sur Windows) et ouvrez un terminal pour s'y connecter.

michel@hp:~$ ls /dev/ttyU* /dev/ttyUSB0 michel@hp:~$ cu -l /dev/ttyUSB0 -s 115200 Connected.

De nombreux autres programmes tels que miniterm, minicom, ou screen pourraient être utilisés à la place de cu qui est certes assez ancien et rarement utilisé aujourd'hui.

 

Premier démarrage toc

Le premier démarrage d'Armbian est inhabituel. Le mot de passe de root doit être défini et un compte utilisateur doit être créé. Cette première session est reproduite ci-dessous, mais sachez que si cela est effectué via le port de débogage série, le système affichera ses messages sur le port indépendamment de ce que l'utilisateur peut saisir. C'est déconcertant si cela se produit lors de la saisie d'un mot de passe ou d'un nom d'utilisateur. Ces messages systèmes ont été effacés ci-dessous.

Welcome to Armbian! Documentation: https://docs.armbian.com | Community support: https://forum.armbian.com IP address: 192.168.32.229 Create root password: ******** Repeat root password: ******** Support status: community support (looking for a dedicated maintainer) Choose default system command shell: 1) bash 2) zsh 1 Shell: BASH Creating a new user account. Press to abort Please provide a username (eg. your first name): jeeves Create user (jeeves) password: ******** Repeat user (jeeves) password: ******** Please provide your real name: Jeeves Dear Jeeves, your account jeeves has been created and is sudo enabled. Please use this account for your daily work from now on. Detected timezone: America/Halifax Set user language based on your location? [Y/n] n

Bien sûr, vous souhaiterez probablement un nom d’utilisateur autre que Jeeves et le fuseau horaire détecté ne sera probablement pas le même que le mien. Même si l'anglais n'est pas la langue de mon ordinateur de bureau et que j'utilise un clavier AZERTY, mes serveurs sans tête ne sont pas localisés, mais vous pouvez en décider autrement.

At your location, more locales are possible: 1) aa_DJ.UTF-8 78) et_EE.UTF-8 2) af_ZA.UTF-8 79) eu_ES.UTF-8 3) an_ES.UTF-8 80) eu_FR.UTF-8 4) ar_AE.UTF-8 81) fi_FI.UTF-8 5) ar_BH.UTF-8 82) fo_FO.UTF-8 6) ar_DZ.UTF-8 83) fr_BE.UTF-8 7) ar_EG.UTF-8 84) fr_CA.UTF-8 8) ar_IQ.UTF-8 85) fr_CH.UTF-8 9) ar_JO.UTF-8 86) fr_FR.UTF-8 10) ar_KW.UTF-8 87) fr_LU.UTF-8 11) ar_LB.UTF-8 88) ga_IE.UTF-8 12) ar_LY.UTF-8 89) gd_GB.UTF-8 13) ar_MA.UTF-8 90) gl_ES.UTF-8 14) ar_OM.UTF-8 91) gv_GB.UTF-8 15) ar_QA.UTF-8 92) he_IL.UTF-8 16) ar_SA.UTF-8 93) hr_HR.UTF-8 17) ar_SD.UTF-8 94) hsb_DE.UTF-8 18) ar_SY.UTF-8 95) hu_HU.UTF-8 19) ar_TN.UTF-8 96) id_ID.UTF-8 20) ar_YE.UTF-8 97) is_IS.UTF-8 21) ast_ES.UTF-8 98) it_CH.UTF-8 22) be_BY.UTF-8 99) it_IT.UTF-8 23) bg_BG.UTF-8 100) ja_JP.UTF-8 24) bhb_IN.UTF-8 101) ka_GE.UTF-8 25) br_FR.UTF-8 102) kk_KZ.UTF-8 26) bs_BA.UTF-8 103) kl_GL.UTF-8 27) ca_AD.UTF-8 104) ko_KR.UTF-8 28) ca_ES.UTF-8 105) ko_KR.UTF-8 29) ca_FR.UTF-8 106) ku_TR.UTF-8 30) ca_IT.UTF-8 107) kw_GB.UTF-8 31) cs_CZ.UTF-8 108) lg_UG.UTF-8 32) cy_GB.UTF-8 109) lt_LT.UTF-8 33) da_DK.UTF-8 110) lv_LV.UTF-8 34) de_AT.UTF-8 111) mg_MG.UTF-8 35) de_BE.UTF-8 112) mi_NZ.UTF-8 36) de_CH.UTF-8 113) mk_MK.UTF-8 37) de_DE.UTF-8 114) ms_MY.UTF-8 38) de_IT.UTF-8 115) mt_MT.UTF-8 39) de_LI.UTF-8 116) nb_NO.UTF-8 40) de_LU.UTF-8 117) nl_BE.UTF-8 41) el_CY.UTF-8 118) nl_NL.UTF-8 42) el_GR.UTF-8 119) nn_NO.UTF-8 43) en_AU.UTF-8 120) oc_FR.UTF-8 44) en_BW.UTF-8 121) om_KE.UTF-8 45) en_CA.UTF-8 122) pl_PL.UTF-8 46) en_DK.UTF-8 123) pt_BR.UTF-8 47) en_GB.UTF-8 124) pt_PT.UTF-8 48) en_HK.UTF-8 125) ro_RO.UTF-8 49) en_IE.UTF-8 126) ru_RU.UTF-8 50) en_NZ.UTF-8 127) ru_UA.UTF-8 51) en_PH.UTF-8 128) sk_SK.UTF-8 52) en_SC.UTF-8 129) sl_SI.UTF-8 53) en_SG.UTF-8 130) so_DJ.UTF-8 54) en_US.UTF-8 131) so_KE.UTF-8 55) en_ZA.UTF-8 132) so_SO.UTF-8 56) en_ZW.UTF-8 133) sq_AL.UTF-8 57) es_AR.UTF-8 134) st_ZA.UTF-8 58) es_BO.UTF-8 135) sv_FI.UTF-8 59) es_CL.UTF-8 136) sv_SE.UTF-8 60) es_CO.UTF-8 137) tcy_IN.UTF-8 61) es_CR.UTF-8 138) tg_TJ.UTF-8 62) es_DO.UTF-8 139) th_TH.UTF-8 63) es_EC.UTF-8 140) tl_PH.UTF-8 64) es_ES.UTF-8 141) tr_CY.UTF-8 65) es_GT.UTF-8 142) tr_TR.UTF-8 66) es_HN.UTF-8 143) uk_UA.UTF-8 67) es_MX.UTF-8 144) uz_UZ.UTF-8 68) es_NI.UTF-8 145) wa_BE.UTF-8 69) es_PA.UTF-8 146) xh_ZA.UTF-8 70) es_PE.UTF-8 147) yi_US.UTF-8 71) es_PR.UTF-8 148) zh_CN.UTF-8 72) es_PY.UTF-8 149) zh_HK.UTF-8 73) es_SV.UTF-8 150) zh_SG.UTF-8 74) es_US.UTF-8 151) zh_TW.UTF-8 75) es_UY.UTF-8 152) zu_ZA.UTF-8 76) es_VE.UTF-8 153) Skip generating locales 77) et_EE.UTF-8 Please enter your choice:153

Une vérification de l'état du système montre qu'un service a échoué.

root@aml-s9xx-box:~# systemctl | grep failed ● smartmontools.service loaded failed failed Self Monitoring and Reporting Technology (SMART) Daemon root@aml-s9xx-box:~# journalctl | grep smart Nov 30 01:10:17 aml-s9xx-box systemd[1]: Starting smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon... Nov 30 01:10:17 aml-s9xx-box smartd[2122]: smartd 7.3 2022-02-28 r5338 [aarch64-linux-6.1.63-current-meson64] (local build) Nov 30 01:10:17 aml-s9xx-box smartd[2122]: Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org Nov 30 01:10:17 aml-s9xx-box smartd[2122]: Opened configuration file /etc/smartd.conf Nov 30 01:10:17 aml-s9xx-box smartd[2122]: Drive: DEVICESCAN, implied '-a' Directive on line 21 of file /etc/smartd.conf Nov 30 01:10:17 aml-s9xx-box smartd[2122]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices Nov 30 01:10:17 aml-s9xx-box smartd[2122]: In the system's table of devices NO devices found to scan Nov 30 01:10:17 aml-s9xx-box smartd[2122]: Unable to monitor any SMART enabled devices. Try debug (-d) option. Exiting... Nov 30 01:10:17 aml-s9xx-box systemd[1]: smartmontools.service: Main process exited, code=exited, status=17/n/a Nov 30 01:10:17 aml-s9xx-box systemd[1]: smartmontools.service: Failed with result 'exit-code'. Nov 30 01:10:17 aml-s9xx-box systemd[1]: Failed to start smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon.

Le code de sortie status=17 signifie qu’il n’y a aucun lecteur à surveiller. Puisqu’aucun lecteur prenant en charge la technologie SMART n’est connecté, le service pourrait être désactivé.

root@aml-s9xx-box:~# systemctl disable smartmontools.service

Cependant, il peut être préférable de modifier la configuration au cas où un disque dur ou un disque SSD serait ajouté au système. À l'aide de deux rapports de bogues (Debian Bug report logs - #1006630 et Bug#1029210: smartmontools.service fails since bookworm), on peut rétablir l'ancien comportement de Debian en attendant la prochaine version de smartmontools en modifiant le fichier de service.

root@aml-s9xx-box:~# sudo nano /lib/systemd/system/smartmontools.service

Il suffisait d’ajouter le paramètre -q never à la ligne ExecStart.

ExecStart=/usr/sbin/smartd -n -q never $smartd_opts

Au redémarrage du système, j'ai ouvert une session SSH en tant qu'utilisateur jeeves. D'ailleurs dès que le boîtier TV se connecte au réseau local, on peut en faire autant et le recours au port de débogage ne devrait plus être nécessaire.

michel@hp:~$ ssh jeeves@192.168.32.229 jeeves@192.168.32.229's password: yyyyyyy _ ___ _ __ _ _ __ ___ | | ___ / _ \__ ____ __ | |__ _____ __ / _` | '_ ` _ \| |_____/ __| (_) \ \/ /\ \/ /____| '_ \ / _ \ \/ / | (_| | | | | | | |_____\__ \\__, |> < > <_____| |_) | (_) > < \__,_|_| |_| |_|_| |___/ /_//_/\_\/_/\_\ |_.__/ \___/_/\_ Welcome to Armbian 23.11.1 Bookworm with Linux 6.1.63-current-meson64 No end-user support: community creations System load: 26% Up time: 0 min Memory usage: 9% of 1.88G IP: 192.168.32.229 CPU temp: 46°C Usage of /: 26% of 6.7G RX today: 179.5 KiB Last login: Mon Dec 18 03:36:55 2023 from 192.168.32.198 jeeves@aml-s9xx-box:~$ systemctl | grep failed jeeves@aml-s9xx-box:~$ systemctl status smartmontools ● smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon Loaded: loaded (/lib/systemd/system/smartmontools.service; enabled; preset: enabled) Active: active (running) since Mon 2023-12-18 03:42:11 UTC; 1min 8s ago Docs: man:smartd(8) man:smartd.conf(5) Main PID: 1304 (smartd) Status: "Next check of 0 devices will start at 04:12:11" Tasks: 1 (limit: 1978) Memory: 3.5M CPU: 139ms CGroup: /system.slice/smartmontools.service └─1304 /usr/sbin/smartd -n -q never Dec 18 03:42:10 aml-s9xx-box systemd[1]: Starting smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon... Dec 18 03:42:11 aml-s9xx-box smartd[1304]: smartd 7.3 2022-02-28 r5338 [aarch64-linux-6.1.63-current-meson64] (local build) Dec 18 03:42:11 aml-s9xx-box smartd[1304]: Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org Dec 18 03:42:11 aml-s9xx-box smartd[1304]: Opened configuration file /etc/smartd.conf Dec 18 03:42:11 aml-s9xx-box smartd[1304]: Drive: DEVICESCAN, implied '-a' Directive on line 21 of file /etc/smartd.conf Dec 18 03:42:11 aml-s9xx-box smartd[1304]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices Dec 18 03:42:11 aml-s9xx-box smartd[1304]: In the system's table of devices NO devices found to scan Dec 18 03:42:11 aml-s9xx-box smartd[1304]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 0 NVMe devices Dec 18 03:42:11 aml-s9xx-box systemd[1]: Started smartmontools.service - Self Monitoring and Reporting Technology (SMART) Daemon. jeeves@aml-s9xx-box:~$

Tout fonctionne, mais il y aura une vérification inutile de zéro appareils à intervalles de quatre heures. Si je ne me trompe pas, l'image Ubuntu (Armbian_23.11.1_Aml-s9xx-box_jammy_current_6.1.63.img) ne nécessite pas cet ajustement du fichier de service, car jammy contient une version plus ancienne de smartmontools rapport à la version en bookworm>.

Tous les services systemd fonctionnent et la vérification des interfaces réseau montre que l'Ethernet et le Wi-Fi sont disponibles, même si seule l'interface Ethernet est active.

jeeves@aml-s9xx-box:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 6a:b7:fc:4f:8e:8e brd ff:ff:ff:ff:ff:ff altname end0 inet 192.168.32.229/24 brd 192.168.32.255 scope global dynamic noprefixroute eth0 valid_lft 258961sec preferred_lft 258961sec inet6 fe80::5576:9de5:67b0:1987/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether f0:03:8c:19:d7:37 brd ff:ff:ff:ff:ff:ff

Utilisez l'outil nmtui pour définir et activer une connexion sans fil si désirée. J'ai rapidement vérifié que cela fonctionnait.

À cette étape, il est opportun de mettre à jour le système.

jeeves@aml-s9xx-box:~# sudo apt update && sudo apt upgrade -y

Cette opération peut demander un temps considérable. La différence entre une interface à 1 Gb/s sur l'Alfawise S92 et une interface à 100 Mb/s sur le TX9 Pro devient évidente ici. Encore une fois, on en a pour son argent.

Suite toc

L'appareil peut fonctionner comme un petit serveur Linux, car les principaux périphériques sont pris en charge. Il y a une exception ennuyeuse ; l'affichage DEL sur le devant du boîtier est bloqué sur boot. Le projet linux_openvfd d'Arthur Liberman peut gérer le contrôleur de FD628 intégré, mais je ne vois pas comment l'ajouter au système d'exploitation, à moins de modifier son code source et puis recréer l'image Armbian. Cela dépasse mon échelle salariale. Cependant, amlogic-s9xxx-armbian contient openvfd. Cette version d'Armbian (en particulier Armbian 23.11.0-trunk Lunar avec Linux 6.1.60-ophub) fonctionne sur mon Alfawise S92 où il est possible d'activer l'indicateur DEL.

jeeves@domo:~$ armbian-openvfd ┌────────[ Enable LED ]─────────┐ │ │ │ 11. x96max (s905x2) │ │ 12. x96maxplus (s905x3) │ │ 13. x96air (s905x3) │ │ 14. h96max-x3 (s905x3) │ │ 15. hk1-x3 (s905x3) │ │ 16. hk1box (s905x3) │ │ 17. tx3 (s905x3) │ │ 18. tx3-mini (s905w) │ │ 19. t95 (s905x) │ │ 20. t95z-plus (s912) │ │ 21. tx9-pro (s912) │ │ 22. x92 (s912) │ │ 23. whale (s905x3) │ | 24. x88pro-x3 (s905x3) | │ 99. diy │ │ │ ├──────[ Other Operations ]─────┤ │ │ │ -u. update │ │ 0. stop │ │ 1. quit │ │ │ └───────────────────────────────┘ [ OPTIONS ] Please Input ID:

Dommage qu'il n'y ait pas d'affichage DEL sur l'Alfawise S92. Évidemment, la prochaine étape consiste à installer cette version d'Armbian sur le TX9 Pro pour voir si l'affichage DEL peut être transformé en horloge. En attendant, un morceau de ruban adhésif noir pour électricien résoudra bien le problème. Il remplacera le ruban Kapton déjà apposer sur l'écran qui, autrement, était beaucoup trop lumineux.

<-Turning an Amlogic S192 Android TV Box Into a Linux Appliance