La colonne radio Internet la plus simple "Kodi" ou le sauvetage de la brique "Raspberry"


Les locaux principaux:

  1. Il existe une ancienne carte Raspberry Pi de première génération non utilisée;
  2. La planche repose sur le meuble et n'est pas utilisée - la planche Brick;

Ce que j'aimerais recevoir:

  1. À un certain moment (par exemple, par humeur)
    la carte cesse d'être une "brique" et une carte mémoire magique y est insérée;
  2. Un câble Ethernet et une prise provenant d'un haut-parleur domestique ordinaire ou d'un casque sont connectés à la carte;
  3. Après l'alimentation, l'ancienne «Brick» chante

L'idée principale:

  1. Le nombre minimum de gestes pour n'importe quel paramètre, dans le cas le plus idéal, nous connectons uniquement le câble "Ethernet", l'alimentation et les haut-parleurs, et ne faisons rien d'autre, à partir du mot "complètement";
  2. L'ancienne «brique» prête à l'emploi, par exemple, 20 stations de radio Internet, dont la commutation en cercle peut être suspendue en appuyant sur la molette de la souris ou sur une broche GPIO spécifique (connectez deux fils et fermez-les (mon rêve depuis l'enfance));
  3. La gestion est effectuée sur un canal radio, et ce canal radio peut devenir une souris radio ordinaire;
  4. Prenez un système prêt à l'emploi, assemblez la distribution dans le "Projet Yocto"
    c'est-à-dire comme d'habitude, nous ne ferons rien, car tout a déjà été fait.
    (placez simplement un observateur extérieur de l'autre côté du «téléviseur» );

La description

La colonne Radio Internet la plus simple "KODI"
L'assemblage est destiné aux anciennes cartes Raspberry Pi 1
(ramassant de la poussière quelque part sur le placard, mais qui sont toujours prêts à travailler)

Par défaut, la liste m3u8 de 12 stations de radio Internet est utilisée.

Il est supposé que la carte fonctionne sans sortie HDMI, et pour l'éteindre, débranchez simplement l'adaptateur d'alimentation de la prise. Et en tant que télécommande sans fil ultra moderne, vous pouvez utiliser votre super souris radio (enfin, ou connecter une souris grise ordinaire avec une queue).

Lorsque vous activez l'interface réseau par défaut, elle est configurée via le protocole DHCP et la dernière station de radio stockée dans la liste est lue, le volume de lecture est contrôlé par une souris conventionnelle:
(enfin nommez votre souris «chef de département», et félicitez-la, elle le méritait)

  -      -      (3  )     -      (3  )     -    

Pour ajouter votre propre liste de stations de radio Internet
Vous pouvez toujours connecter un câble HDMI depuis le téléviseur
et utiliser l'interface graphique standard de Kodi 17.6
(éteignez la carte, connectez HDMI et allumez l'adaptateur secteur)

Menu principal Kodi => «Modules complémentaires» => «Mes modules complémentaires»
=> «Clients PVR» => «Client simple PVR IPTV»

Mise en œuvre initiale
(possible)
Au départ, lorsque j'ai décidé de créer une «rubrique Radio Internet», j'ai prévu ce qui suit:

  • Distribution de console minimaliste dans le projet Yocto;
  • Le flux audio est lu via GStreamer;
  • L'interface réseau est configurée via DHCP;

Et cette solution présente plusieurs avantages:

  1. Assez rapide (sortie en mode de fonctionnement à partir de l'alimentation 30-40 sec);
  2. Assez fiable (moins de programmes, moins de points d'échec);
  3. La distribution de la console est beaucoup plus facile à définir en lecture seule
    c'est-à-dire les programmes n'écrivent rien à la racine du système de fichiers
    (un système de fichiers sur support SDHC est, à mon avis, le premier candidat à l'échec);

Remarque:
   Yocto     (rootfs)        ,         Yocto   : 1)       / (     ,  Ubuntu) 2)        (   ,   )      ,                (  /var/log  ..)             .   Yocto Project      "read only",          ,          "read only"  "read/write",       ... 



Et un inconvénient principal:

"Cela doit être fait" c'est-à-dire J'ai besoin de passer N soirées
(généralement après le travail, et c'est le moment le plus inefficace, à ce moment le cerveau ne pense plus, il dort généralement)

Et pourtant, j'ai écrit mon précédent article sur Habré sur le projet de centre multimédia Kodi et Yocto
et la capacité de continuer dans la même veine a dominé mon élan de recherche. À ce sujet dans le chapitre suivant.

Transformer Kodi en colonne de radio Internet

Pour ajouter les fonctionnalités dont j'ai besoin, j'ajouterai une autre méthode à la recette de build de distribution décrite dans l' article précédent , voir berserk-image.bb

 GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml" #       (1- 2- ) F1_LINE = "<startlast default=\"true\"^_^gt&#0;lt^_^/startlast>" R1_LINE = "<startlast^_^gt lt^_^/startlast>" #   ,       F2_LINE = "<audiodevice default=\"true\">PI:HDMI</audiodevice>" R2_LINE = "<audiodevice>PI:Analogue</audiodevice>" #   HDMI        #       ,      F3_LINE = "<addonupdates default=\"true\"^_^gt&#0;lt^_^/addonupdates>" R3_LINE = "<addonupdates^_^gt lt^_^/addonupdates>" #     : #   " "  "   " 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" #   HDMI    , #    " " 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 former l'image de distribution en tant que fichier brut unique, qui est écrit sur la carte mémoire avec la commande dd

Cela se fait de cette façon:
ROOTFS_POSTPROCESS_COMMAND + = "add_radio_guisettings; off_kodi_welcome; "

En bref, dans le fichier de configuration principal de Kodi 17.6, «trois points» changent

  • Lancer la configuration de la dernière chaîne TV sélectionnée;
  • Configuration de la sortie audio, seule la sortie audio analogique est toujours connectée;
  • Désactiver les mises à jour automatiques;
  • Remarque:
            ,  ,          sqlite => TV29.db,        (        ),   xml   Kodi   . 



séquence d'actions plus détaillée pour chaque élément:

1) Cliquez sur l'icône d'engrenage dans le coin supérieur gauche de l'écran
et sélectionnez «PVR and TV settings» (image d'un téléviseur avec deux klaxons)
plus loin sur le côté gauche du menu, sélectionnez l'élément "Lecture", et dans la section centrale "Général"
spécifiez dans la liste déroulante «Continuer depuis la dernière chaîne au démarrage»
sélection du paramètre "Premier plan"

ou plus clairement:

  " PVR  " => "" => "     " => " " 

2) Cliquez sur l'icône d'engrenage dans le coin supérieur gauche de l'écran et sélectionnez l'élément:

  " " => "" => "" => "   " 

3) Cliquez sur l'icône "engrenage" dans le coin supérieur gauche de l'écran et sélectionnez:

  " " => "" => "  " => "PI: Analogue" 

Ça fait deux ans que je regarde mal la télé.

Je dois vous avouer que depuis deux ans je n'ai pas appris à regarder correctement la télé.

Je regarde habituellement la télévision dans la cuisine. La carte Raspberry Pi 2B est connectée au téléviseur et les connecteurs Ethernet et HDMI sont connectés à la carte. La carte est alimentée via un câble USB standard, qui est branché sur le port USB du téléviseur, c'est-à-dire en fait, allumer le téléviseur à l'aide de la télécommande standard alimente également la carte Raspberry Pi, et éteindre le téléviseur à partir de la télécommande réinitialise également immédiatement l'alimentation de la carte Raspberry Pi.

Oui, je suis bien conscient que cela ne peut pas être fait, parce que le système de fichiers racine du centre multimédia Kodi (ext3), j'ai des fonctions normales de lecture / écriture. Mais je suis une personne paresseuse, et pour commencer j'ai décidé de vérifier combien de temps le système peut être éteint comme ça jusqu'à ce qu'il arrête complètement de se charger, mais malheureusement pendant 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 un tel mode convenait à mon téléviseur, il conviendrait également à un "simple haut-parleur de radio Internet", et comme j'ai désactivé de force la mise à jour automatique des plug-ins Kodi, la probabilité d'une défaillance du système de fichiers deviendrait encore moins. Bien que je ne vois pas de problème avec cela

Remarque:
           yocto  IMAGE_FEATURES += "read-only-rootfs"         "read only" 


La distribution «haut-parleurs de radio Internet» décrite dans l'article est domestique, et ce qui est le plus important pour une distribution domestique est une belle interface graphique. À mon avis, il est très difficile ou presque impossible d'apprendre à un utilisateur ordinaire à piloter des commandes magiques étranges dans la console, et il ne connaît même pas un tel mot. Et voici l'interface graphique, c'est s'il vous plaît.

Et c'est peut-être mon principal argument en faveur d'une distribution non console. Interface utilisateur graphique à tube chaud de Kodi, oui, elle n'est pas particulièrement nécessaire, mais elle l'est.
(J'ai aussi complètement oublié de mentionner que Kodi peut être contrôlé à distance, par exemple depuis un smartphone, en installant l'application Yatse, et peut-être que pour quelqu'un ce sera un plus)

Configuration Kodi pour le contrôle de la souris


et maintenant Rocket
 <keymap> <global> <mouse> <wheelup>VolumeUp</wheelup> <wheeldown>VolumeDown</wheeldown> <middleclick>ChannelDown</middleclick> <longclick id=^_^quot&#0;quot^_^>ChannelDown</longclick> <longclick id=^_^quot quot^_^>ChannelUp</longclick> <!--  rocket --> </mouse> </global> </keymap> 


La configuration remplace les événements globaux pour les éléments suivants:

  • molette de la souris vers l'avant
  • défilement de la molette de la souris
  • en cliquant sur le bouton central de la souris
  • traitement des clics longs de souris (3sec ou plus),
    0 identifiant bouton droit, 1 identifiant bouton gauche


plus d'informations sur la configuration des événements de souris:

kodi.wiki/view/Alternative_keymaps_for_mice
kodi.wiki/view/Action_IDs
kodi.wiki/view/Window_IDs

Que faire si le système de câbles n'est pas venu chez vous

"Mais je n'ai pas de ports Ethernet gratuits à la maison (ou je n'en ai jamais eu)" - certains des heureux propriétaires d'anciennes cartes Raspberry Pi 1 peuvent s'exclamer (peut-être que la carte a été achetée pour la recherche et est restée dans l'armoire)

Et comme il n'y a pas de Wifi intégré sur la carte, alors sans connexion Ethernet, ce n'est pas très fonctionnel.

Bien sûr, la possibilité d'utiliser la carte Raspberry Pi 1 sans Ethernet existe, mais cela nécessitera des efforts de votre part. Habituellement, ces choses sont intéressantes à réaliser uniquement dans le cadre de l'étude de quelque chose de nouveau, c'est-à-dire ce n'est pas un travail d'utilisateur.

Considérez donc une option hypothétique pour utiliser une carte sans Ethernet:

Vous pouvez connecter un adaptateur externe USB - Wifi, guidé par cette considération,
que l'adaptateur devrait bien fonctionner sous Linux

Remarque:

     WiFi    ,        ,      WiFi    Linux.    ,               WiFi .     WiFi          Linux.     : - WiFi    Atheros D-Link DWA-126 802.11n (AR9271) - WiFi  NetGear WNDA3200 - WiFi  NetGear WNA1100 - WiFi  TP-Link TL-WN722N (AR9271) - WiFi  TL-WN322G v3 - WiFi  TL-WN422G - 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 comme suit:

  • Installez une distribution Linux répandue
    à usage général, par exemple, "Ubuntu Desktop"
  • Système de démarrage
  • Branchez votre adaptateur USB WiFi
  • 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, votre adaptateur est bien pris en charge et vous pouvez continuer votre travail de connexion de cet adaptateur dans un kit de distribution spécialisé et éventuellement avec d'autres versions du noyau
    (sinon, non, hélas - il vaut mieux ne même pas essayer)

Prise en charge de l'adaptateur Wifi externe dans "Raspberry PI"

Pour que l'adaptateur WiFi fonctionne correctement sous Linux: nous avons besoin de deux choses:
1) Prise en charge du noyau Linux pour un adaptateur Wifi spécifique
2) La présence dans le système d'un module noyau pour un adaptateur Wifi spécifique

Prenez par exemple l'adaptateur TP-Link TL-WN722N. Il a juste une excellente antenne.
Nous trouverons le chipset sur lequel la carte fonctionne - je l'ai "AR9271",
note:

    ,  ,            ,  Wifi  .     ,   TL-WN722N  2,     Realtek RTL8188,       Linux (  ),    , ..           ()  . 

Maintenant, nous trouverons le nom du paramètre dans la configuration du noyau responsable du pilote pour le chipset AR9271, il est préférable de rechercher la combinaison de mots "AR9271 cateee.net"
où "cateee.net" est un site sympa décrivant les configurations des modules du noyau Linux

Trouvez immédiatement le nom de la configuration du noyau - CONFIG_ATH9K_HTC
et le nom du module du noyau ath9k_htc dont nous avons besoin

puis spécifiez simplement le nom du module souhaité dans le fichier de 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 équipement supplémentaire à votre système (enfin, bien sûr, s'il est déjà pris en charge dans le noyau Linux)

Que faire si vous êtes un designer geek

Et vous créez les choses les plus cool, par exemple, comme ici ou vous êtes un étudiant et rêvez de créer quelque chose de similaire.

Donc, vous pouvez prendre une sorte d'écran tactile pour RPI sur aliexpress, y commander une batterie appropriée, la connecter à la carte Raspberry Pi 1.2 ou 3 (mieux à 3, car il a le Wifi intégré), choisir un thème de conception graphique interface dans Kodi, conçue pour l'écran tactile et le tour est joué => vous pouvez obtenir un lecteur audio simple. Bien sûr, ce sera assez volumineux, mais ce sera le vôtre.

  : A  ,     Kodi     Raspberry Pi Zero Wifi  yocto     :   => build/conf/local.conf MACHINE = 'raspberrypi0-wifi'   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 graphique Kodi 17.6 
   à cause d'un cœur de processeur dans Zero, vous semblerez 
   mystérieux, vous pouvez faire une feinte avec vos oreilles et en récupérer une plus ancienne, 
   mais une version très rapide, par exemple Kodi 15.2, c'est plus 
   "amical" (parfois l'héritage décide de tout)

Malheureusement, je n'ai pas de frais, donc je ne peux pas vérifier, mais selon mes sentiments, cela devrait fonctionner.

Instructions de montage brèves
  1)   Yocto Project (  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)    Repo: mkdir ~/bin curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo 3)    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)  : ./shell.sh bitbake berserk-image       Raspberry Pi 3B Plus, 3B  2B: repo init -u https://github.com/berserktv/bs-manifest \ -m raspberry/rocko/radio-0.2.8.xml 

instructions de montage plus détaillées
et enregistrement sur une carte microSDHC, voir l' article précédent


Postscript

Bien sûr, l'idée d'une rubrique radio Internet est typique, elle est connue de tous et sur le hub vous trouverez de nombreux articles sur ce sujet, par exemple ici

Et vous pourriez aussi penser que je réponds aux exigences d'une solution clé en main. Je peux contrer cela et dire non, honnêtement honnêtement.

Plus de versions pour vous sont bonnes et différentes.

Source: https://habr.com/ru/post/fr482714/


All Articles