[RTEX] Odroid-C2 - eMMC - Armbian Buster Kernel 5.3 - Jeedom V4

Bonjour à tous, c’est akenad :slight_smile: ,

Aujourd’hui je vais vous présenter un retour d’expérience sur l’installation de l’Armbian Buster Kernel 5.3 et Jeedom V4 sur un Odroid-C2 avec eMMC.
(EDIT 18/03/2024 : fonctionne aussi avec Armbian Bullseye Kernel 5.10.123)

Équipements et logiciels utilisés:

  • PC Windows et BalenaEtcher
  • adaptateur USB3/eMMC
  • Odroid-C2, avec mémoire eMMC hardkernel 32 Go (C2 Linux, carré rouge)
  • Armbian Buster Kernel 5.3
  • Jeedom V4
  • Clé USB Z-Wave+ Aeotec Z-Stick Gen5 ZW090 (Hardware Version 3)
  • Carte d’extension (GPIO) EnOcean Pi
  • Carte d’extension (GPIO) RaZberry v2 Z-wave+ pour Raspberry Pi ZWAVE.ME

Les étapes sont les suivantes :

  1. Nettoyage de l’eMMC
  2. Installation de Armbian Buster Kernel 5.3 sur l’eMMC
  3. Installation de l’eMMC sur l’Odroid-C2 et configuration du système
  4. Installation de Jeedom V4
  5. Associer l’Odroid-C2 au compte Market Jeedom
  6. Installer la clé USB Aeotec et le plugin Z-Wave
  7. Activation du port série du GPIO
  8. cartes GPIO RaZberry et EnOcean sur le port /dev/ttyAML1

1) Nettoyage de l’eMMC

  • Connecter l’eMMC sur l’adaptateur USB3/eMMC.
  • Connecter l’adaptateur sur le PC Windows.

Nous allons tout d’abord effectuer un « nettoyage » de l’eMMC, c’est-à-dire effacer la totalité des partitions éventuellement existantes.

Pour une eMMC hardkernel 32 Go neuve, il existe une partition FAT de 128 Mo, et une 2ième partition qui occupe le reste. Après nettoyage la totalité est « non alloué ».

Sous Windows, utilisation de DISKPART et du gestionnaire de disques.
Invite de commande Windows (Exécuter en tant qu’administrateur) :

> diskpart

DISKPART> list disk
N° disque Statut Taille Libre Dyn GPT
--------- ------------- ------- ------- --- ---
Disque 0 En ligne 238 G octets 2048 K octets
Disque 1 En ligne 29 G octets 23 G octets
>select disk 1
Le disque 1 est maintenant le disque sélectionné.

DISKPART> list disk
N° disque Statut Taille Libre Dyn GPT
--------- ------------- ------- ------- --- ---
Disque 0 En ligne 238 G octets 2048 K octets
* Disque 1 En ligne 29 G octets 0 octets
DISKPART> clean
DiskPart a réussi à nettoyer le disque.

DISKPART> list disk
N° disque Statut Taille Libre Dyn GPT
--------- ------------- ------- ------- --- ---
Disque 0 En ligne 238 G octets 2048 K octets
* Disque 1 En ligne 29 G octets 29 G octets

DISKPART> exit

Quitte DiskPart...

2) Installation de Armbian Buster Kernel 5.3 sur l’eMMC

La documentation de Armbian est ici : https://docs.armbian.com.

  • Télécharger l’image Armbian Buster disponible ici : Index of /archive/odroidc2/archive/
    En novembre 2019 J’ai téléchargé Armbian_19.11.3_Odroidc2_buster_current_5.3.11.7z (c’est une Linux Kernel 5.3, nécessaire pour utiliser l’interface série du GPIO,
    pour le télécharger, voir ici : [RTEX] Odroid-C2 - eMMC - Armbian Buster Kernel 5.3 - Jeedom V4 - #95 par ClassicRed
    En décembre 2022 j’ai téléchargé Armbian_22.05.4_Odroidc2_bullseye_current_5.10.123.img.xz (=> debian 11.3) et ça fonctionne aussi (ne pas oublier de faire un apt update --allow-releaseinfo-change)
    .
    (pour ceux qui n’utilise pas de carte GPIO, prendre la dernière version)

  • Désarchiver ce fichier avec 7-zip.

  • Flasher le fichier image (.img) résultant sur l’eMMC avec l’utilitaire balenaEtcher ici : balenaEtcher - Flash OS images to SD cards & USB drives
    (le fichier .img.xz est directement reconnu dans balenaEtcher)

  • Saisir le mot de passe administrateur.
    (balenaEtcher crée une partition EXT4 d’environ 2 Go et le reste est « Non alloué »)

  • Ejecter l’adaptateur USB3/eMMC.

3) Installation de l’eMMC sur l’Odroid-C2 et configuration du système

  • Déconnecter l’eMMC de l’adaptateur USB3/eMMC.
  • Connecter l’eMMC sur l’Odroid-C2.

Éventuellement pour suivre les sorties consoles, connecter écran HDMI et clavier USB mais ce n’est pas indispensable.

  • Brancher le cable réseau puis le cordon d’alimentation.

La led rouge doit s’allumer. Au bout de quelques secondes la led bleue doit clignoter et la led du port réseau doit s’allumer.

(Nota : Lors du premier démarrage la partition système qui était environ de 2 Go est automatiquement étendue au maximum de la capacité de l’eMMC, soit ici d’environ 32 Go)

Si tout se passe bien, au bout d’une minute, l’Odroid-C2 est visible sur le réseau.

Trouver l’adresse IP allouée par le serveur DHCP à l’Odroid-C2 en consultant le serveur DHCP (la Box Internet si c’est le serveur DHCP) ou par exemple avec l’outil NMAP.

Accéder par SSH (par exemple avec Putty sous Windows) en root (mot de passe : 1234).

Au premier login il est demandé de changer le mot de passe de root et de créer un utilisateur (qui sera « sudo enable ») :

Changer le mot de passe de root (par exemple Mjeedom96).

Comme demandé, créer un utilisateur :

username : jeedom
password : Mjeedom96 (par exemple)

Appuyer plusieurs fois sur la touche ENTER.

Pour configurer quelques éléments système lancer la commande :

# armbian-config

(C’est le même principe que le raspi-config pour Raspbian avec son écran bleu et ses options dans une fenêtre grise.)

Nous allons configurer la TimeZone, le Hostname, mettre éventuellement une adresse IP fixe :

  • option Personal :
    Timezone Europe Paris
    Hostname modifier odroidc2 en jeedom3 (enfin pour mon cas c’est la 3ième Jeedom)
  • option System :
    -Freeze (pour bloquer les upgrades du kernel)
    -Hardware (sélectionner uartA)

OdroidC2-armbian-config-uartA

  • option Network :
    IP static (pour ceux qui ne veulent pas utiliser DHCP)

Si une IP statique est configurée, différente du DHCP, la session SSH est interrompue.
Se reconnecter en ssh, sur la nouvelle adresse IP, avec le compte jeedom.

/!\ ATTENTION : Les mise à jour éventuelles du système sont réalisés par la méthode Debian apt update, mais ne pas utiliser apt upgrade si vous avez l’intention d’utiliser le GPIO, et ainsi rester en kernel 5.3.

Voici la version système :

jeedom@jeedom3:~# uname -a
Linux jeedom3 5.3.11-meson64 #19.11.3 SMP PREEMPT Mon Nov 18 20:10:57 CET 2019 aarch64 GNU/Linux

jeedom@jeedom3:~# cat /etc/issue
Armbian 19.11.3 Buster \l

La liste des sources installée dans /etc/apt/sources.list est la suivante :

deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main

La liste des sources installée dans /etc/apt/sources.list.d/armbian.list est la suivante :

deb http://apt.armbian.com buster main buster-utils buster-desktop

4) Installation de Jeedom V4

Connexion SSH avec le compte jeedom, et passage en root :

$ su -

/!\ ATTENTION : le tiret est très important. (la raison est expliquée ici : [RTEX] Debian 10 - Buster - netinst - amd64 - Jeedom V4)

La documentation officielle de l’installation de Jeedom est ici : https://doc.jeedom.com/fr_FR/installation/cli

Installation en ligne de commande :

# wget https://raw.githubusercontent.com/jeedom/core/master/install/install.sh
# chmod +x install.sh
# ./install.sh

/!\ ATTENTION : pour rester en kernel 5.3.11 (pour que l’interface série du GPIO puisse fonctionner), avant de lancer install.sh, il faut mettre en commentaire la ligne :
apt-get -y dist-upgrade
(sauf si vous avez bien fait armbian-config/System/Freeze, voir plus haut)

Au cours de l’installation s’affiche une fenêtre “Samba server and utilities”. Taper sur la touche Entrée.

A la fin de l’installation de Jeedom, bien noter le mot de passe root MySQL indiqué.

L’installation de Jeedom V4 est OK. Elle a installé entre autres php7.3.
L’installation de Jeedom ajoute le composant “non-free” sur toutes les sources de paquets (dans /etc/apt/sources.list).

Le paquet “libav-tools” a été remplacé par le paquet “ffmpeg”, c’est donc ce dernier qu’il faut installer pour effectuer du codec stream audio video.

5) Associer l’Odroid-C2 au compte Market Jeedom

Ayant déjà une JeedomSmart j’ai déjà un compte Market et il est possible d’y associer aussi la l’Odroid-C2.
(on peut en avoir jusqu’à 5 avec un service pack Power) .

Se connecter avec un navigateur sur l’Odroid-C2 à partir de son IP. On obtient la mire de login Jeedom.
L’identifiant par défaut admin est aussi le mot de passe par défaut.

Sélectionner Réglages → Système → Configuration

Dans l’onglet « Général », apparaît des champs déjà renseignés :

  • Système : DIY
  • Clef d’installation : […] (identifie l’Odroid-C2 quand elle communique avec le Market)

et des champs à renseigner :

  • Nom de votre Jeedom : jeedom3
  • Langue : French

Dans l’onglet « Mises à jour » puis le sous-onglet « Market », cocher la case « activer Market ».
Si ce n’est pas déjà fait, et remplir le champ « Nom d’utilisateur » et « Mot de passe » en fonction des identifiants du Market (identifiants du Market et non pas de Jeedom).

Ensuite cliquez sur « Tester ». Doit afficher « Test réussi ». puis cliquez sur bouton Sauvegarder.
Retourner dans l’onglet « Général ».
Cliquer sur le bouton rafraîchir.

Se connecter ensuite au Market Jeedom pour s 'assurer que dans l’onglet « Mes Boxs » l’Odroid-C2 de nom jeedom3 à bien été ajoutée.
Si ce n’est pas le cas recommencer à cliquer sur le bouton rafraîchir évoqué précédemment, attendre un peu le temps de la prise en compte sur internet et rafraîchir la page du Market.

Maintenant que la l’Odroid-C2 est associée au compte Market Jeedom, il est possible d’utiliser le centre de mise à jour et la Gestion des plugins.

6) Installer la clé USB Aeotec et le plugin Z-Wave

Dans Jeedom, cliquer Réglages → Système → Eteindre

Débrancher le cordon d’alimentation de l’Odroid-C2.
Connecter la clé USB AeoTec sur un port USB
Rebrancher le cordon d’alimentation, l’anneau lumineux de la clé Aeotec clignote.

Nous allons installer le plugin Z-Wave.
Se connecter avec un navigateur sur l’IP de l’Odroid-C2.

Cliquer Plugins → gestion des plugins → Market

Sélectionner le plugin Z-Wave et cliquer installer.

Il ne reste plus qu’a configurer le plugin :

Cliquer le bouton « Activer ».

Cliquer le bouton « Relancer » les Dépendances (environ 15 minutes).

Sélectionner le Port clé Z-Wave : /dev/ttyACM0

Cliquer le bouton « Sauvegarder ». Le démon passe au statut OK.

Cliquer sur l’icône « Santé ». Le statut doit être à « Complete ».

Cliquer sur l’icône « Réseau Zwave ». L’État actuel doit être à « Network ready ».


7) Activation du port série du GPIO

Sur l’odroid-C2, le SoC Amlogic S905 expose 2 ports série (UART).
Le premier est relié a un connecteur (4 broches) et est utilisé comme port console.
Le deuxième est relié au connecteur GPIO (pin 8/10).

Avec l’image précédemment installée (Armbian_19.11.3_Odroidc2_buster_current_5.3.11.7z), le port console est actif par défaut et se nomme /dev/ttyAML0.

Il est visible avec la commande :

$ ls /dev | grep ttyAML

ttyAML0

/!\ ATTENTION : Par contre le port série du GPIO n’est pas actif par défaut.

Pour l’activer il convient d’ajouter dans le fichier /boot/armbianEnv.txt la ligne :

overlays=uartA

et de rebooter.

(sauf si vous avez bien fait armbian-config/System/Hardware/uartA, voir plus haut)

Le port série du GPIO se nomme /dev/ttyAML1

Il devient alors visible avec la commande :

$ ls /dev | grep ttyAML

ttyAML0
ttyAML1

/!\ ATTENTION : si vous utilisez une autre image que :
Armbian_19.11.3_Odroidc2_buster_current_5.3.11.7z
(ce qui donne dans Jeedom Analyse → Santé : Version OS : Linux hostname 5.3.11-meson64 #19.11.3 SMP PREEMPT Mon Nov 18 20:10:57 CET 2019 aarch64 GNU/Linux [10.2])
ou si vous faites un « apt upgrade », il se peut que /dev/ttyAML1 ne monte plus !

8) cartes GPIO RaZberry et EnOcean sur le port /dev/ttyAML1

Des cartes comme le RaZberry ou l’EnOcean Pi se montent sur le connecteur GPIO et utilisent le port série pour fonctionner.

Lors de la configuration du plugin Z-wave ou EnOcean, il est présenté une liste déroulante pour choisir le port.

Dans la liste déroulante, « Odroid C2 (/dev/ttyS1) » est utilisable avec une image Armbian Stretch Kernel 3 ou la JeedomSmart. Voir ici :
https://forum.jeedom.com/viewtopic.php?f=128&t=32932&start=40#p681583

Mais avec une Armbian Buster Kernel 5.3 le port série du GPIO n’est plus monté sur /dev/ttyS1 mais sur /dev/ttyAML1.

Au jour ou j’écris ses lignes /dev/ttyAML1 est sélectionnable dans la liste déroulante du plugin EnOcean (bien aller vers la fin de la liste) mais pas du plugin Z-wave.
Pour que /dev/ttyAML1 apparaisse dans la liste déroulante du plugin Z-wave il convient d’ajouter à l’aide du plugin JeeXplorer 2 lignes de code dans le fichier
/plugins/openzwave/plugin_info/configuration.php

Extrait avant l’ajout :

<?php
foreach (jeedom::getUsbMapping('', true) as $name => $value) {
	echo '<option value="' . $name . '">' . $name . ' (' . $value . ')</option>';
}
?>

Extrait après l’ajout :

<?php
foreach (jeedom::getUsbMapping('', true) as $name => $value) {
	echo '<option value="' . $name . '">' . $name . ' (' . $value . ')</option>';
}
foreach (ls('/dev/', 'tty*') as $value) {
	echo '<option value="/dev/' . $value . '">/dev/' . $value . '</option>';
}
?>



Pour que le plugin Z-Wave (ou le core Jeedom) soit éventuellement modifié à la source par le développeur de Jeedom SAS, j’ai fais une demande d’amélioration ici :
Plugin Z-Wave - Odroid-C2 - accès à /dev/ttyAML1

La demande d’amélioration ayant été prise en compte, il n’est plus nécessaire de faire la modification de code décrite plus haut.

Voila j’espère que ce retour d’expérience sera utile aux membres Jeedom.

akenad :slight_smile:

5 « J'aime »

Bonjour @bronche @domoggvad @ZygOm4t1k @manuc0 @doryphore @lulu740,

L’astuce clé à retenir dans le post précédent est que pour un Odroid-C2 Armbian Buster Kernel 5.3, pour activer le port série du GPIO, ajouter overlays=uartA dans /boot/armbianEnv.txt.

akenad :slight_smile:

Salut Akenad,
Je suis en train de mettre ma configuration à jour - et merci pour ton tuto - mais tu n’as pas parlé des ports USB (est-ce à dire que tu n’as pas eu le soucis que j’expose ci-dessous ?). Chez moi, les ports USB sont tout le temps éteints et aucun périphérique n’est détecté. Pour remédier au problème (connu des gens d’Armbian visiblement), il faut ajouter la ligne extraargs=usbcore.autosuspend=-1 dans le fichier /boot/armbianEnv.txt
Source ici
Evidemment, j’ai installé la même version de Buster que toi.

Bonjour @akenad
Merci pour l’info, je viens juste de voir ton message, je ne comprends rien à ce nouveau forum,
De mon côté je n’ai aucun problème, comme j’ai installé l’image toute prête armbian tout fonctionne.

Bonjour @Xtof31,

Effectivement avec la version de l’Armbian Buster K5 que j’ai utilisé, lorsqu’on branche l’alimentation sur l’Odroid-C2, suite au boot, l’alimentation du Hub USB interne ne s’active pas s’il n’y a aucune clé USB sur le HUB. c’est la raison pour laquelle dans mon premier post je dis qu’il faut brancher la clé USB avant d’alimenter l’Odroid-C2. Il faut toujours laisser au moins une clé USB sur le HUB.
Actuellement j’ai un Odroid-C2 avec le RazBerry2 et 4 clé USB : EnOcean, ConBee2, Huawei E3372 , SENA UD100a et ça fonctionne.

akenad :slight_smile:

Bonjour @domoggvad,

Le sujet c’est l’Armbian Buster K5.
N’évoquerais tu pas une Debian Buster arm64 ?

akenad :slight_smile:

tu as complétement raison

bonjour @akenad je viens de vérifier c’est bien une k5.3 y

Bonjour à tous,

Akenad, merci pour ton tuto, grace à toi cela me donne le courage de basculer certainement ce week end. Toujours très précieux vos tutos/explications, je vous souhaite de passer de belles fetes de fin d’année, MERCI à TOUS.

1 « J'aime »

Bonjour Akenad,
après installation sous Buster, je pensais avoir enfin la température dans le plugin monitoring, mais toujours rien. C’était bien pratique avec un raspberry de commander un petit ventilo en gestion de la température du CPU. Je suis surpris que même sur la box Jeedom, cela ne soit pas pris en compte ou je me trompe.
En tout cas félicitation pour ton auto qui ma motivé à basculer de Stretch —> Buster

Quelqu’un sait si le module RTC d’hardkernel (un PFC8563) fonctionne sur ce nouveau kernel ?
J’en ai installé un sur mon odroid C2 en kernel 3.x. Il ne fonctionnait pas sur kernel en 4.x (en tout cas lors de mes essais de l’époque)
Merci

Bonjour @Lulu740,

C’est possible avec le plugin script :
La documentation officielle est ici : https://doc.jeedom.com/fr_FR/plugins/programming/script/
Dans l’exemple décrit pour le Raspberry il est indiqué :

cat /sys/class/thermal/thermal_zone0/temp

pour l’Odroid-C2 Armbian remplacer par :

cat /etc/armbianmonitor/datasources/soctemp

La valeur obtenue est divisée par mille pour avoir des degrés Celscius.
Pour la JeedomSmart la température de la CPU est accessible avec le plugin Monitoring2.
Pour l’Odroid-C2 sous Armbian, c’est aussi possible avec le plugin Monitoring2 en modifiant une ligne de code avec le plugin JeeXplorer.
La documentation officielle est ici : https://doc.jeedom.com/fr_FR/plugins/monitoring/monitoring2/
Dans /plugins/monitoring2/core/class/monitoring2_cli.class.php il est indiqué :

/sys/devices/virtual/thermal/thermal_zone0/temp

remplacer par :

/etc/armbianmonitor/datasources/soctemp

Utiliser alors la commande CLI bash « cputemp » :

akenad :slight_smile:

Bonjour @Makai,

Je n’ai pas de Shield RTC toutefois il semblerait qu’il utilise l’interface I2C :


Dans la même logique que ce que j’ai expliqué plus haut pour activer l’interface UART de l’Odroid-C2 Armbian Buster Kernel 5,
il pourrait être intéressant de vérifier si ça fonctionne en ajoutant overlays=i2cA dans /boot/armbianEnv.txt.

akenad :slight_smile:

Bonjour Akenad,

merci pour tes explications, j’aurais mieux aimé avoir l’information dans le cadre du monitoring, et pas en fenêtre additionnel, mais là je pense que ce n’est possible que par ta présentation décrite.

Bonjour @akenad,
Déjà bonnes fêtes de fin d’année.
As tu essayé d’installer samba sous buster,ça a bien fonctionné sous rasbian pour un PI en buster, sur un C2 en debian 9, mais j’ai toujours une erreur sous arbiam c2 Buster
systemctl restart smbd.service
Job for smbd.service failed because the control process exited with error code.
See « systemctl status smbd.service » and « journalctl -xe » for details.

root@odroidc2:~# systemctl status smbd.service

  • smbd.service - Samba SMB Daemon
    Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: ena
    Active: failed (Result: exit-code) since Tue 2019-12-24 19:26:53 UTC; 12h ago
    Docs: man:smbd(8)
    man:samba(7)
    man:smb.conf(5)
    Process: 4199 ExecStartPre=/usr/share/samba/update-apparmor-samba-profile (cod
    Process: 4203 ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOP
    Main PID: 4203 (code=exited, status=1/FAILURE)

Warning: Journal has been rotated since unit was started. Log output is incomple
aurais tu une idée?
j’ai suivi ce tuto:

Merci

Ok je viens de trouver à force de chercher
I discovered this in /var/log/samba/log.
invalid permissions on directory ‹ /var/lib/samba/private/msg.sock ›: has 0777 should be 0700

Naturally setting permissions on /var/lib/samba/private/msg.sock to 0700 fixed it for me.

Je voulais tout simplement te remercier @akenad pour ton tuto bien utile, notamment pour les ports GPIO pour la carte Razberry.
J’ai remis en œuvre mon Jeedom les doigts dans le nez, je vais pouvoir upgrader à présent en V4 :slight_smile:

1 « J'aime »

Bonjour,
Tout nouveau dans cette communauté, je vous souhaite de bon développement pendant cette période difficile.
Pour ma part, j’ai fait l’installation ci-dessus, sur ma carte Odroid C2, j’ai réglé quelques petits bugs d’installation, lié au dépendance en rajoutant setuptools, mais je bloque avec le démon de la carte Pi_Enocean. j’ai bien rajouté « overlays=uartA » dans le fichier adéquat, mais le ttyAML1 n’apparaît pas?
Votre aide sera la bienvenue, merci pour ce super tuto.
Alain

Bonjour @Zoopy,

que donne ? :

$ ls /dev | grep ttyAML

akenad :slight_smile:

ttyAML0
Merci