
Principales conditions préalables :
- Il y a une ancienne carte Raspberry Pi de première génération inutilisée ;
- La carte repose sur une étagère comme un poids mort et n'est pas utilisée - carte « Brique » ;
Ce que je voudrais obtenir :
- À un moment donné (par exemple selon l'humeur)
la carte cesse d'être une « Brique » et on y insère une carte mémoire magique ; - Un câble Ethernet et une prise de haut-parleur ou d'écouteurs standard sont connectés à la carte ;
- Après la mise sous tension, l'ancien « Brique » - chante
L'idée principale :
- Un minimum de mouvements pour les réglages ; idéalement, nous connectons seulement le câble « Ethernet », l'alimentation et les haut-parleurs, et nous ne faisons rien d'autre, au sens propre du terme, « du tout » ;
- Ancien « Brique » par défaut supportant par exemple 20 stations de radio Internet, dont le changement peut être associé au clic de la molette de la souris ou à un certain pin GPIO (brancher deux fils et les court-circuiter (mon rêve d'enfance)) ;
- La gestion est réalisée par un canal radio, et ce canal radio peut être une simple souris sans fil ;
- Prendre un système déjà prêt, compiler la distribution dans « Yocto Project »
c'est-à-dire que, comme d'habitude, nous n'allons rien faire car tout est déjà fait.
(il suffit juste de placer un observateur externe de l'autre côté « du Téléviseur »);
Description
Le plus simple des haut-parleurs de radio Internet « KODI »
L'assemblage est destiné aux anciennes cartes Raspberry Pi 1
(couchées quelque part sur une étagère, mais prêtes à travailler à nouveau)
Par défaut, une liste m3u8 de 12 stations de radio Internet est utilisée.
Il est prévu que la carte fonctionne sans sortie HDMI, et pour l'éteindre, il suffit de retirer l'adaptateur d'alimentation de la prise. Comme télécommande ultra moderne, vous pouvez utiliser votre super souris radio (ou brancher une souris standard avec un fil).
À l'allumage, l'interface réseau est configurée par défaut via le protocole DHCP et la dernière station de radio mémorisée de la liste est jouée, le contrôle du volume est effectué avec une souris classique :
(faites enfin de votre souris « la cheffe du contrôle », et félicitez-la, elle le mérite)
Molette avant - augmentation du volume audio
Molette arrière - diminution du volume audio
Maintenir enfoncé (3 secondes ou plus) le bouton droit de la souris
- sélectionner la station suivante
Maintenir enfoncé (3 secondes ou plus) le bouton gauche de la souris
- sélectionner la station précédente
Pour ajouter votre propre liste de stations de radio Internet
vous pouvez toujours connecter un câble HDMI depuis la télévision
et utiliser l'interface graphique standard de Kodi 17.6
(éteignez la carte, connectez le HDMI et allumez l'adaptateur d'alimentation)Menu principal Kodi => «Extensions» => «Mes extensions»
=> «Clients PVR» => «PVR IPTV Simple Client»
Implémentation initiale
(éventuelle)
Au départ, lorsque j'ai décidé de créer une « enceinte Internet », j'avais prévu ce qui suit :
- Distribution console minimaliste dans Yocto Project ;
- Le flux audio est diffusé via GStreamer ;
- L'interface réseau est configurée via DHCP ;
Et cette solution présente plusieurs avantages :
- Assez rapide (temps de démarrage de 30 à 40 secondes après l'alimentation) ;
- Assez fiable (moins de programmes, moins de points de défaillance) ;
- Une distribution console est beaucoup plus facile à mettre en mode lecture seule
c'est-à-dire que les programmes n'écrivent rien dans le système de fichiers racine
(et le système de fichiers sur le support SDHC est à mon avis le premier candidat aux pannes) ;
Remarque :
Dans Yocto, il est assez simple de passer le système de fichiers racine (rootfs) en mode lecture seule en modifiant un paramètre lors de la construction. Yocto propose par défaut deux options : 1) Fonctionnement en mode lecture/écriture (c'est ainsi que fonctionnent toutes les distributions généralistes, par exemple Ubuntu), 2) Fonctionnement en mode lecture seule (c'est ainsi que fonctionnent les distributions spécialisées, par exemple dans les routeurs). En mode lecture seule, tous les répertoires où les applications et services écrivent habituellement des données pendant leur fonctionnement sont montés en mémoire vive (par exemple, le répertoire /var/log, etc.). Les données ne sont valables que pour la session de travail actuelle et après une coupure de courant, les données sont perdues. Si vous spécifiez dans Yocto Project d'utiliser "read only" lors de la construction, alors après la construction votre distribution sera configurée en mode lecture seule, mais vous pouvez toujours ajouter la possibilité de passer dynamiquement de "read only" à "read/write", mais c'est une toute autre histoire ...
Et un principal inconvénient :
«Il faut le faire», c'est-à-dire que je dois consacrer un certain nombre de soirées
(généralement après le travail, et c'est le moment le moins efficace, à ce moment-là, le cerveau ne pense plus, il est généralement endormi)
Et puis, dans mon précédent article sur Habr, j'écrivais sur le centre multimédia project
et la possibilité de continuer dans la même veine a surpassé mon élan de recherche. À ce sujet dans le prochain chapitre.
Transformer Kodi en haut-parleur radio Internet
Pour ajouter la fonctionnalité dont j'ai besoin, je vais ajouter une méthode supplémentaire à la recette de construction de la distribution décrite précédemment voir le fichier berserk-image.bb
GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml"
# configuration du lancement de la dernière chaîne TV sélectionnée (1-fond 2-premier plan)
F1_LINE = "0"
R1_LINE = "1"
# configuration de la sortie audio, seul la sortie audio analogique est toujours connectée
F2_LINE = "PI:HDMI"
R2_LINE = "PI:Analogue"
# étant donné que HDMI n'est pas utilisé par défaut, désactive la mise à jour automatique
# sinon l'alimentation peut se couper, mais les données restent non enregistrées
F3_LINE = "0"
R3_LINE = "2"
# cette méthode est responsable de l'ajout de la configuration :
# qui transforme "Smart TV" en "simple colonne de radio Internet"
add_radio_guisettings() {
sed -i "s|${F1_LINE}|${R1_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
sed -i "s|${F2_LINE}|${R2_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
sed -i "s|${F3_LINE}|${R3_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
}
FIND_STR = "touch ./tmp/.FIRST_RUN."
SCRIPT_FIRST_RUN = "etc/init.d/first-run.sh"
# étant donné que la sortie HDMI peut ne pas être utilisée,
# il est nécessaire de désactiver "l'écran d'accueil"
off_kodi_welcome() {
sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}
Les méthodes sont destinées à modifier le système de fichiers racine avant de créer l'image de distribution sous la forme d'un seul fichier raw, qui est enregistré sur la carte mémoire par la commande dd
Cela se fait de la manière suivante :
ROOTFS_POSTPROCESS_COMMAND += «add_radio_guisettings; off_kodi_welcome;»
En résumé, dans le fichier de configuration principal de Kodi 17.6, trois points sont modifiés
- Configuration du lancement de la dernière chaîne TV sélectionnée ;
- Configuration de la sortie audio, seul la sortie audio analogique est toujours connectée ;
- Désactivation de la mise à jour automatique ;
- Remarque :
La seule difficulté que j'ai rencontrée, c'est que j'ai dû également ajouter le fichier de base de données au format sqlite => TV29.db, qui indique la chaîne TV actuellement lue (étant donné qu'aucune chaîne n'est sélectionnée par défaut), et cela ne peut pas être fait via la configuration xml dans Kodi.
séquence d'actions plus détaillée pour chaque point :
1) Cliquez sur l'icône «roue dentée» dans le coin supérieur gauche de l'écran
et sélectionnez «Paramètres PVR et TV» (image de télé avec deux cornes)
ensuite, dans la partie gauche du menu, sélectionnez «Lecture», puis dans la section centrale «Général»
indiquez dans la liste déroulante «Continuer avec la dernière chaîne au démarrage»
en choisissant l'option «Premier plan»
ou plus clairement :
"Paramètres PVR et TV"
=> "Lecture"
=> "Continuer avec la dernière chaîne au démarrage" => "Premier plan"
2) Cliquez sur l'icône en forme de «roue dentée» dans le coin supérieur gauche de l'écran et sélectionnez :
"Paramètres système"
=> "Extensions" => "Mises à jour" => "Ne jamais vérifier les mises à jour"
3) Cliquez sur l'icône en forme de «roue dentée» dans le coin supérieur gauche de l'écran et sélectionnez :
"Paramètres système"
=> "Audio" => "Dispositif de sortie audio" => "PI : Analogue"
Comment j'ai regardé la télévision de manière incorrecte pendant deux ans.
Je dois vous avouer que je n'ai pas réussi à apprendre à regarder la télévision correctement en deux ans.
En général, je regarde la télévision dans la cuisine. La télévision est connectée à une carte Raspberry Pi 2B, et la carte a des ports Ethernet et HDMI. L'alimentation de la carte est fournie via un câble USB normal, qui est branché dans le port USB de la télévision, c'est-à-dire qu'allumer la télévision avec la télécommande standard fournit également de l'énergie à la carte Raspberry Pi, et éteindre la télévision avec la télécommande coupe également immédiatement l'alimentation de la carte Raspberry Pi.
Oui, je suis parfaitement conscient que ce n'est pas la bonne façon de faire, car le système de fichiers racine du centre multimédia Kodi (ext3) fonctionne en mode lecture/écriture. Mais je suis une personne paresseuse, et au début, j'ai décidé de vérifier combien de temps je pouvais éteindre le système avant qu'il ne cesse complètement de démarrer, mais malheureusement, en deux ans, je n'ai pas réussi à le faire (peut-être que j'ai juste eu de la chance, je ne sais pas).
Et à mon avis, si ce mode a fonctionné pour ma télévision, il conviendra aussi à une «simple enceinte Internet». De plus, comme j'ai désactivé de force la mise à jour automatique des plugins Kodi, la probabilité de défaillance du système de fichiers est encore moins. Pour l'instant, je ne vois pas de problèmes à ce sujet.
Remarque :
Mais vous pouvez toujours, si vous le souhaitez, avec une commande yocto
IMAGE_FEATURES += "read-only-rootfs"
et un peu de magie, passer votre distribution en mode "lecture seule".
La distribution «enceinte Internet» décrite dans l'article est grand public, et ce qui est essentiel pour une distribution grand public, c'est un GUI attrayant. À mon avis, il est très difficile, voire presque impossible, d'apprendre à un utilisateur ordinaire à taper des commandes magiques incompréhensibles dans la console, de plus, il ne connaît même pas ce terme. Mais un GUI, c'est tout autre chose.
Et c’est sans conteste mon principal argument en faveur d'une distribution non-console. L’interface graphique utilisateur chaleureuse et conviviale de Kodi, oui, elle n'est pas absolument nécessaire, mais elle est là.
(J'ai même oublié de mentionner que Kodi peut être contrôlé à distance, par exemple depuis un smartphone, en installant l’application « Yatse », et cela peut être un avantage pour certains.)
Configuration de Kodi pour la gestion par souris
et maintenant la Rocket
VolumeUp
VolumeDown
ChannelDown
ChannelDown
ChannelUp
La configuration redéfinit les événements globaux pour les éléments suivants :
- défilement de la molette de la souris vers l'avant
- défilement de la molette de la souris vers l'arrière
- clic sur le bouton du milieu de la souris
- traitement d'un clic long de la souris (3 secondes ou plus),
0 identifiant pour le bouton droit, 1 identifiant pour le bouton gauche
plus d'informations sur la configuration des événements de la souris :
Que faire si le système câblé ne vous est pas parvenu
« Mais je n'ai pas de ports Ethernet libres à la maison (ou je n'en ai jamais eu) » pourrait s'exclamer certains heureux propriétaires des anciennes cartes Raspberry Pi 1 (la carte a peut-être été achetée pour des recherches et est restée rangée sur une étagère).
Et comme la carte n'a pas de Wi-Fi intégré, sans connexion Ethernet, elle n'est pas très fonctionnelle.
Bien sûr, il est possible d'utiliser la carte Raspberry Pi 1 sans Ethernet, mais cela nécessitera certains efforts de votre part. Généralement, de telles choses ne sont intéressantes à réaliser que dans le cadre de l'apprentissage de quelque chose de nouveau, c'est-à-dire que ce n'est pas un travail pour l'utilisateur.
Donc, considérons un scénario hypothétique d'utilisation de la carte sans Ethernet :
Vous pouvez connecter un adaptateur USB externe — Wi-Fi, en gardant en tête que
l'adaptateur doit bien fonctionner sous Linux.
Remarque :
Malheureusement, certains adaptateurs WiFi ne fonctionneront pas, ce n'est pas une particularité de la distribution présentée dans cet article, mais plutôt un problème des pilotes spécifiques des adaptateurs WiFi dans le noyau Linux. Il faut constater qu'à l'heure actuelle, vous ne pouvez pas simplement aller au magasin et acheter n'importe quel adaptateur WiFi. Vous devez plutôt choisir un adaptateur WiFi dans une liste moins problématique et bien compatible avec Linux.
J'ai seulement vérifié les modèles suivants :
- Adaptateur WiFi avec chipset Atheros D-Link DWA-126 802.11n (AR9271)
- Adaptateur WiFi NetGear WNDA3200
- Adaptateur WiFi NetGear WNA1100
- Adaptateur WiFi TP-Link TL-WN722N (AR9271)
- Adaptateur WiFi TL-WN322G v3
- Adaptateur WiFi TL-WN422G
- Adaptateur Wifi Asus USB-N53 chipset Ralink RT3572
Si vous avez déjà un adaptateur WiFi USB, vous pouvez vérifier s'il fonctionne bien sous Linux de la manière suivante :
- Installez une distribution Linux largement répandue
, par exemple « Ubuntu Desktop » - Démarrez le système
- Connectez votre adaptateur WiFi USB
- Lancez le gestionnaire de réseau et essayez de vous connecter à votre point d'accès WiFi
- Si tout fonctionne bien et que votre connexion Internet est stable, cela signifie que votre adaptateur est bien supporté et vous pouvez continuer à l'utiliser dans une distribution spécialisée et éventuellement avec d'autres versions du noyau.
(si ce n'est pas le cas, eh bien, il vaut mieux ne pas tenter)
Support d'un adaptateur WiFi externe sur « Raspberry PI »
Pour un fonctionnement correct de l'adaptateur WiFi sous Linux : nous aurons besoin de deux choses :
1) Support de l'adaptateur WiFi par le noyau Linux
2) Présence dans le système d'un module de noyau pour l'adaptateur WiFi particulier
Prenons par exemple l'adaptateur TP-Link TL-WN722N. Il a une excellente antenne.
Nous allons trouver le chipset sur lequel la carte fonctionne — pour moi c'est « AR9271 », remarque :
Ce qui est intéressant, c'est que pour le même modèle d'un même fabricant, le chipset WiFi peut différer. Personnellement, j'ai rencontré le cas où pour le TL-WN722N version 2, un autre chipset Realtek RTL8188 est déjà utilisé, et celui-ci fonctionnait mal sous Linux (à l'époque), malheureusement, c'est ainsi, parfois il faut aussi faire attention aux petits chiffres de version au dos de l'adaptateur.
Maintenant, trouvons le nom du paramètre dans la configuration du noyau qui correspond au pilote du chipset AR9271, il vaut mieux chercher la combinaison de mots « AR9271 cateee.net »
où «cateee.net» est un excellent site décrivant les configurations des modules du noyau Linux
Trouvons d'abord le nom de la configuration du noyau — CONFIG_ATH9K_HTC
et le nom du module que nous voulons ath9k_htc
et ensuite, il suffit d'indiquer le nom du module requis dans le fichier fragment de configuration
Noyau Linux => recipes-kernel/linux/files/rbpi.cfg, ajoutez la ligne :
CONFIG_ATH9K_HTC=m
Ainsi, à l'avenir, vous pouvez connecter tout matériel supplémentaire à votre système (à condition bien sûr qu'il soit déjà supporté par le noyau Linux)
Que faire si vous êtes un hacker — constructeur
Et que vous créez des choses incroyables, par exemple comme ou vous êtes étudiant et rêvez de créer quelque chose de similaire.
Alors, à la volée, vous pouvez prendre un écran tactile pour RPI sur aliexpress, y commander une batterie rechargeable appropriée, connecter tout cela à la carte Raspberry Pi 1, 2 ou 3 (de préférence à 3, car elle a le Wifi intégré), choisir un thème d'interface graphique dans Kodi adapté aux écrans tactiles et voilà => vous pouvez obtenir un simple lecteur audio. Bien sûr, il sera assez encombrant, mais il sera à vous.
Remarque :
Pour assembler un centre multimédia Kodi pour la carte la plus économique
Raspberry Pi Zero Wifi dans yocto, vous devez modifier deux lignes :
fichier de configuration => build/conf/local.conf
MACHINE = 'raspberrypi0-wifi'
recette de construction Kodi => recipes-mediacentre/kodi/kodi_17.bbappend
EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE',
'raspberrypi0-wifi', '${BS_RPI}', '', d)}"
Si la réactivité de l'interface utilisateur Kodi 17.6 en raison d'un seul cœur de processeur dans le Zero vous semble mystérieuse, vous pouvez faire un tour et compiler une version plus ancienne, mais très rapide, comme Kodi 15.2, elle est dans ce domaine plus "conviviale" (parfois l'héritage résout tout)
Malheureusement, je n'ai pas de carte, donc je ne peux pas vérifier, mais d'après mes impressions, cela devrait fonctionner.
Brève instruction sur l'assemblage
1) Installez les dépendances du projet Yocto (par exemple sous Ubuntu) :
sudo apt-get install -y --no-install-suggests --no-install-recommends
gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential
chrpath socat cpio python python3 python3-pip python3-pexpect
xz-utils debianutils iputils-ping python3-git python3-jinja2
libegl1-mesa libsdl1.2-dev xterm
2) Téléchargez et installez Repo :
mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
3) Téléchargez le projet depuis GitHub :
PATH=${PATH}:~/bin
mkdir radio
cd radio
repo init -u https://github.com/berserktv/bs-manifest
-m raspberry/rocko/radio-rpi-0.2.8.xml
repo sync
4) Construisez le projet :
./shell.sh
bitbake berserk-image
Vous pouvez également le construire pour les cartes Raspberry Pi 3B Plus, 3B et 2B :
repo init -u https://github.com/berserktv/bs-manifest
-m raspberry/rocko/radio-0.2.8.xml
une instruction plus détaillée sur la construction
et l'enregistrement sur la carte microSDHC.
Post-scriptum
Bien sûr, l'idée d'une enceinte Internet radio est classique, elle est bien connue et sur Habr, vous trouverez de nombreux articles à ce sujet, par exemple
Et vous pourriez penser que j'ai simplement adapté les exigences à la solution finale. À cela, je peux répondre que non, sincèrement.
L'histoire de M. Ervi
Que vous le croyiez ou non, voici comment cela s'est passé :
Notre bureau est voisin d'une entreprise de fabrication de différents équipements sonores, et un jour, le directeur de cette entreprise, appelons-le M. "Ervi", s'est approché de notre directeur adjoint, M. "Arsène", et lui a demandé combien il était difficile de faire jouer un flux audio sur une carte Raspberry Pi, c'est-à-dire la carte étant reliée au réseau et aux enceintes, et "le son caractéristique est audible".
Après cela, M. Arsène s'est renseigné auprès du collaborateur de mon supérieur, M. "Boris", et lui a transféré la question. Eh bien, en tant qu'observateur extérieur, j'ai par hasard retenu cette idée et l'ai appelée "La tâche des trois supérieurs".
En gros, ils voulaient bien faire, et finalement, citation - "Mais M. Ervi, comme d'habitude, a aidé."
Peu de temps après, je me suis renseigné auprès de M. "Boris" sur son opinion quant à la rédaction d'un petit article à ce sujet sur "Habr", ce à quoi "Boris" a répondu qu'apporter des "trois éléments du menu" dans Kodi n'apportait pas vraiment d'informations nouvelles et ne méritait pas d'être mentionné séparément. Bien sûr, je suis complètement d'accord avec lui et c'est pourquoi je ne lui dirai pas que j'ai écrit quelque chose à ce sujet.
L'article est écrit exclusivement pour la carte "Raspberry Pi 1" empruntée à M. "Boris" pour la durée de l'expérience, les coïncidences avec toutes les autres cartes "Raspberry Pi 1" sont fortuites.
Je vous souhaite de nombreuses compilations bonnes et variées, et que même un ancien brique chante pour vous cette année.
Source : habr.com
