Lateo.net - Flux RSS en pagaille (pour en ajouter : @ moi)

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierPila's blog

Compiler Marlin en ligne de commande

Par : Pila

Cet article résume le process nécessaire pour compiler Marlin en ligne de commande sous Linux avec PlatformIO Core.

1. Installer PlatformIO Core.

2. Ajouter PlatformIO au PATH local :

export PATH=$PATH:~/.platformio/penv/bin

3. Récupérer le code source de Marlin.

4. Si on récupère le code source officiel (et pas une version déjà customisée pour une machine spécifique ), récupérer les fichiers de configuration dans le dépot git MarlinFirmware/Configurations, et copier les fichiers de configuration adéquat dans le dossier Marlin / Marlin /

5. Se placer dans le dossier Marlin ( contenant platformio.ini ).

6. Identifier la valeur de MOTHERBOARD, en gras dans l’exemple ci dessous, à partir du fichier Configuration.h. ( pour une carte BTT SKR E3 MINI V2.0 )

$ cat Marlin/Configuration.h | grep MOTHERBOARD
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
If not defined the default pin for the selected MOTHERBOAR

7. Identifier les environnements PlatformIO compatibles à partir du fichier pins.h ( attention à supprimer le BOARD dans la valeur de MOTHERBOARD ):

$ cat Marlin/src/pins/pins.h | grep BTT_SKR_MINI_E3_V2_0
elif MB(BTT_SKR_MINI_E3_V2_0)
#include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1
env:STM32F103RC_btt env:STM32F103RC_btt_512K
env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB

8. Compiler avec l’environnement adapté ( dans mon cas gestion de l’USB mais pas 512K de ROM ) :

$ platformio run -e STM32F103RC_btt_USB

9. Récupérer le fichier firmware.bin à l’emplacement suivant :

.pio/build/STM32F103RC_btt_USB/firmware.bin

10. Le copier sur une carte SD ( sans altérer son nom ), et la mise à jour s’effectue à la mise sous tension de l’imprimante. Le fichier sera alors renommé en FIRMWARE (sans extension).

11. Si présence d’un fichier EEPROM.DAT sur la carte SD lors de la mise à jour firmware, le contenu de l’EEPROM (calibration, réglages) sera écrasé.

Raspberry Pi : Du son en réseau avec Jack

Par : pilatomic

Il y a déjà 5 mois, j’expérimentais la transmission de son en réseau avec PulseAudio.

Bien que concluant, le système péchait par sa latence (certes faible, mais toujours perceptible), et son manque de stabilité.

Je me suis depuis penché sur Jack. Il s’agit d’un serveur son pour Linux, axé productivité musicale.

Il est possible de le configurer pour transmettre du son sur le réseau, mais le manque de documentation rend la tâche ardue.

J’ai pu obtenir un système assez stable après de nombreux essais, permettant d’utiliser un Raspberry Pi comme sortie son distante, avec une latence quasiment imperceptible.

Le projet repose sur l’utilisation de NetJack2, la 2ème révision du protocol réseau de Jack, ainsi que l’utilisation de Jack_Autoconnect, et a pour objectif de rendre le fonctionnement aussi fiable que possible.

J’ai rendu l’ensemble disponible sur GitLab : https://gitlab.com/Pilatomic/networkedjack

Le résultat est très satisfaisant, mis a part un unique problème restant : le client ne doit pas être stoppé pendant que le serveur est en fonctionnement, sous peine de devoir redémarrer le serveur. Il est sans doute possible de le régler avec un petit script bash, qui ping continuellement le client, et arrête le serveur lorsque le client n’est pas joignable, mais cette situation n’étant pas pénalisante dans mon cas, je ne me suis pas penché sur le sujet.

L’ensemble est suffisamment fiable, je l’utilise pour de la transmission de son en temps réel en entreprise

Raspberry Pi : Du son en réseau avec PulseAudio

Par : Pila

Cet article décrit comment utiliser le Raspberry Pi comme sortie son ( sink ) distante ( en réseau ), pour un ordinateur sous Linux.

Il exploite les capacités réseau de PulseAudio, tant coté Raspberry que sur l'ordinateur source.

2 méthodes de connexions sont proposées :

  • La découverte automatique du Raspberry par Pulseaudio, simple et pratique, mais pas toujours très fiable
  • La configuration manuelle du Raspberry comme sortie son "tunnel" sur l'ordinateur source

Configuration du Raspberry Pi

Installer les packages nécessaires :

$ apt-get install pulseaudio avahi-daemon dbus-x11

Configurer PulseAudio, en ajoutant à la fin du fichier /etc/pulse/system.pa, la ligne suivante (dans ce cas, tous les clients du réseau 192.168.0.0/24 sont autorisés à se connecter)

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24

Ajouter ensuite un service systemd pour PulseAudio, en créant le fichier /etc/systemd/system/pulseaudio.service, avec pour contenu :

[Unit]
Description=PulseAudio Daemon

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit

Il ne rester qu'à activer le service, puis à le démarrer :

$ systemctl enable pulseaudio

$ systemctl start pulseaudio

A ce stade, la mise en place du coté du Raspberry Pi devrait être achevée. Cependant, chez moi, cette configuration produisait des craquements très audibles.

Le problème a été résolu en éditer le fichier /etc/pulse/system.pa, et en remplaçant la ligne

load-module module-udev-detect

Par

load-module module-udev-detect tsched=0

A partir de là, 2 choix (qui ne sont pas mutuellement exclusifs, les 2 cohabitent très bien) s'offrent à vous :

Découverte manuelle :

Plus fiable que la découverte automatique, mais plus contraignante (nécessite de configurer chaque ordinateur voulant exploiter la sortie son du Raspberry, et ne fonctionne pas si le Raspberry n'est pas joignable au démarrage de l'ordinateur source)

Sur l'ordinateur source, ajouter dans le fichier /etc/pulse/default.pa la ligne suivante :

load-module module-tunnel-sink-new server=XXX.XXX.XXX.XXX sink_name=Remote sink_properties="device.description='Raspberry'" channels=2 rate=44100

En indiquant l'adresse IP du Raspberry

Découverte automatique

Sur le Raspberry, installer les packages nécessaires :

$ apt-get install pulseaudio-module-zeroconf

Toujours sur le raspberry, configurer PulseAudio, en ajoutant à la fin du fichier /etc/pulse/system.pa, la ligne suivante

load-module module-zeroconf-publish

Sur l'ordinateur source, installer le paquet de configuration du PulseAudio

$ apt-get install paprefs

Exécuter paprefs, puis activer la découverte des appareils en réseau :

Redémarrer ensuite l'ordinateur cible, le Raspberry devrait être disponible comme nouvelle sortie son !

Conclusion

En commençant cette manipulation, j'avais peur que la latence de l'audio ne la rende inutile.

Si un peu de latence se fait en effet sentir (+200ms mesurés par rapport à une sortie sur la carte son interne du PC), elle est toutefois suffisamment faible pour ne pas perturber un usage d'écoute musicale.

Pour une utilisation Home Cinéma en revanche, il se peut que cette latence pose problème, à vous de juger !

Source :

Raspberry Pi : Commandes utiles pour réaliser un affichage dynamique en mode portrait

Par : Pila

Cet article est un mémo contenant lqes commandes utiles pour la réalisation d'un affichage dynamique vertical avec un Raspberry Pi

Désactiver la mise en veille de l'écran

sudo nano /boot/cmdline.txt

ajouter sur la même ligne :

consoleblank=0

source : https://www.raspberrypi.org/documentation/configuration/screensaver.md

Affichage en mode portrait

sudo nano /boot/config.txt

ajouter sur une nouvelle ligne :

display_rotate=1

Fichiers temporaire en RAM (pour économiser des cycles d'écriture sur la carte SD)

sudo nano /etc/fstab

ajouter les lignes suivantes :

tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime,size=64m 0 0

Système de fichier en lecture seul

sudo nano /etc/fstab

ajouter "ro" dans les attributs du système de fichier racine

Repasser le système de fichier en lecture / écriture à chaud

sudo mount -no remount,rw /

Point d'accès Wifi pour administration

https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/

Un minitel comme terminal linux USB. Partie 3 : Et avec systemd ?

Par : Pila

Il y a 2 ans déjà, je publiais 2 articles décrivant comme réutiliser un Minitel comme terminal linux USB :

Cependant, si le premier article est toujours aussi pertinent, avec la migration des distributions Linux vers systemd, le nouveau gestionnaire de démarrage, le second article ne permet plus de configurer les Linux moderne pour utiliser le Minitel comme terminal.

raspi-config Minitel

l'outil de configuration raspi-config sur Minitel

Cet article vise donc à décrire la procédure nécessaire pour réaliser cette opération avec systemd sur Raspberry Pi sous la distribution Raspbian, mais cette procédure devrait s'appliquer, éventuellement avec des modifications mineures, à tout autre matériel exécutant une distribution Linux dotée de systemd.

Tout d'abord, systemd n'utilise plus le fichier innitab et les scripts de démarrages, mais raisonne en terme de services, chaque service étant décrit par un fichier contenant la commande à exécuter, des diverses informations, telles que les dépendances du services.

Un service en particulier est dédié à la gestion des terminaux série : serial-getty@.service

Cependant, il ne comporte pas les bonnes options de configurations pour dialoguer avec un Minitel, nous allons donc créer notre propre service, adapté à cet effet. :

Commençons par créer une copie du service, qu'on modifie ensuite :

sudo cp /lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty-minitel@.service
sudo nano /etc/systemd/system/serial-getty-minitel@.service

Les modifications apportées au fichier concernent la ligne de commande exécutée (getty avec les options adéquats, à la place de agetty), et la suppression de l'attente de plymouth pour démarrer ( en gras ci-dessous)

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Serial Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
BindsTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service
After=rc-local.service

# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes

[Service]
ExecStart=-/sbin/getty -L -i -I "\033\143" %i 4800 minitel1b-80
Type=idle
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target

Ensuite, il ne reste plus qu'à ajouter un lien sur ce fichier dans le répertoire getty.target.wants. Ce lien comporte une indication sur le périphérique concerné (ici ttyUSB0). systemd remplacera toutes les occurrences de %i dans le fichier serial-getty-minitel@.service par cette valeur.

sudo ln -s /etc/systemd/system/serial-getty-minitel@.service /etc/systemd/system/getty.target.wants/serial-getty-minitel@ttyUSB0.service

On redémarre le processus de systemd :

sudo systemctl daemon-reload

Puis on lance manuellement notre service (ou on redémarre le raspberry)

sudo systemctl start serial-getty-minitel@ttyUSB0.service

Et voilà, on retrouve le même fonctionnement obtenu précédemment en modifiant le fichier inittab 🙂

 

 

Pour plus d'info sur l'utilisation du minitel comme terminal sous Linux, voir les parties précédentes :

Source  : doc serial-getty@.service

❌