Home

Notes

En vrac, des notes qui peuvent éventuellement être utiles à d'autres?

Son sous Linux

On a été obligé d'installer pulseaudio dans bien des cas. Soit parce que la distribution le fait par défaut, soit parce que le support alsa a été enlevé par défaut du navigateur (firefox).

Personnellement, sur le pc où j'effectue de l'enregistrement sonore, je dois supprimer pulseaudio et utiliser Alsa pour avoir un fonctionnement correct. Principalement à cause de problèmes de latence avec pulseaudio. Pulseaudio est juste incapable de faire ce que je lui demande.

J'ai bien compris que pulseaudio faisait la mayonnaise et le café et que tout un monde pousse à mort pour l'imposer partout (exactement comme systemd). Mais, car il y a un mais, il y a toujours un truc que les gens oublient volontairement quand ils imposent leur vision : les problèmes et les raisons des autres.

Je fais de la musique avec mon pc, j'enregistre, je mixe en temps réel. Je n'ai pas le choix : je dois supprimer pulseaudio et vivre sans sur ce pc.

Ce qui suit ne traite que de petits soucis habituellement rencontrés lorsqu'on installe un pc ou qu'on change sa configuration. Imaginons , comme moi, vous avez supprimé pulseaudio (paquet pulseaudio) et installé les outils alsa (paquets alsa-base, alsa-utils alsa-tools alsa-oss etc). Et là, mince, pas de son!

Faire un petit :

$ aplay -l
Afin de savoir quelles cartes sont présentes. Puis indiquer dans /etc/asound.conf quelle est la carte par défaut, exemple :
defaults.pcm.card 0 
defaults.pcm.device 0
pour utiliser la première carte reconnue. Si vous avez une carte vidéo qui sort du son (en hdmi), elle pourrait être choisie 'par défaut' par le système, ce qui explique que vous n'entendiez rien. Une fois ceci fait, il faut également utiliser l'utilitaire qui règle les volumes :
$ alsamixer
pour configurer l'ensemble des volumes (y compris pour l'enregistrement , les boucles de retour etc).

Question latence, alsa sous Linux, c'est top. J'arrive à faire ce que j'ai à faire. Pour avoir du son sous firefox-esr, par contre, il faudra que j'ajoute une note qui explique comment recompiler firefox-esr en ajoutant l'option qui active le support alsa...

Retour en haut de page

HP 48

Prendre sa vieille merveille de HP 48 (avant qu'elle tombe en panne!), et dumper la rom (voir les outils de x48 et le cable), puis recompiler et installer x48 dans un chemin où on va chercher des executables.

Ne pas oublier d'installer le répertoire .hp48 dans son $HOME.

Si cela ne marche pas, c'est souvent parce que le fichier rom.dump n'existe pas dans ce dossier. Admettons que j'ai nommé le fichier ROM , gxrom-r. On peut faire un lien dessus avec

cd $HOME/.hp48
ln -s ./gxrom-r ./rom.dump
ou encore, directement le renommer avec
cd $HOME/.hp48
mv ./gxrom-r ./rom.dump

Ahhhh! Avoir une HP48 à portée de main ...

Retour en haut de page

TrueCrypt 7.x

Pour ceux qui ont gardé de vieux volumes truecrypt et qui sont passés à des Linux assez récents. Vous avez sûrement eu des problèmes.. (le sujet n'est pas de juger de la sécurité ou de la pertinence d'utiliser truecrypt). Alors le truc à savoir, c'est qu'il ne faut pas essayer de le compiler avec gcc-6. La compilation fera mine de bien fonctionner, mais l'exécutable créé n'arrivera pas à monter quoi que ce soit. Sous Debian Stretch (9.x), gcc, c'est gcc-6.x.

Donc, pour le recompiler, il faut plutot récupérer les sources de wxwidget-2.8.12 et aussi les headers pkcs11, puis indiquer au script de compilation d'utiliser un 'vieux' gcc et la tuyauterie qui va avec, par exemple chez moi :

make WX_ROOT=/home/turlututu/local/src/wxWidgets-2.8.12 \
	CXX=g++-4.9 CC=gcc-4.9 AR=gcc-ar-4.9 wxbuild 
PKCS11_INC=/home/turlututu/local/src/pkcs make \
	CXX=g++-4.9 CC=gcc-4.9 AR=gcc-ar-4.9 WXSTATIC=1

Il y a aussi la possibilité de récupérer les données d'un volume truecrypt, via LUKS, avec l'option --type tcrypt de cryptsetup. Mais, ce n'est pas équivalent à avoir un truecrypt qui fonctionne (parce que vous vouliez monter le truc sous Windows également par exemple).

Retour en haut de page

Changer de police sous Linux

Si vous êtes sous Linux, vous avez peut-être remarqué que, pour certain sites web, les polices de caractères semblent assez moches ou du moins différentes de celles que vous voyez sur d'autres systèmes. Personnellement, j'ai constaté que l'usage de la police 'Helvetica' (police installée sur un système Microsoft) par un site web donne des résultats peu engageant.

Il est possible de remplacer une police qui ne vous plait pas par une autre. Il y a des options qui touchent l'ensemble de la configuration, ce qui est pratique.

Pour voir ce qu'on a comme police :

fc-match -a 

Pour forcer l'utilisation d'un police en remplacement d'une autre, il faut modifier la configuration.Cette configuration est faite dans des fichiers situés dans /etc/fonts. En général, votre distribution y a installé un tas de trucs. Pour modifier la configuration globale sans géner les mises à jour de votre distribution, il faut souvent créer un nouveau fichier nommé local.conf dans /etc/fonts. Regardez votre fichier /etc/fonts/fonts.conf et avisez en fonction du contenu. Sous Debian Stretch, c'est ce qu'il faut faire : créer un fichier /etc/fonts/local.conf. Avec nos préférences :

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match>
  <test name="family">
   <string>Helvetica</string>
  </test>
  <edit name="family" mode="assign" binding="strong">
   <string>DejaVu Sans</string>
  </edit>
 </match>
</fontconfig>

Cela va remplacer 'Helvetica' par 'DejaVu Sans' dans ce cas. Pour les polices spécifiques, on peut essayer de remplacer par une famille générique (un alias) 'sans' ou 'serif' ou 'monospace'. Il semble que cela fonctionne plus ou moins bien. En mettant directement le nom de police, et pas un alias, je sais que cela fonctionne. Vous pouvez ajouter autant de blocs 'match' que vous le souhaitez et changer les noms pour d'autres polices. Bien vérifier avec fc-match qu'elles existent.

Vous pouvez également changer les polices pour les familles par défaut (sans, sans-serif, monospace, serif) en insérant des blocs <alias> dans le bloc <fontconfig>.

<alias>
 <family>sans</family>
  <prefer><family>DejaVu Sans</family></prefer>
</alias>

En utilisant fc-match, vous pouvez vérifier votre configuration. Vous devrez peut-être vous déconnecter et vous reconnecter pour que cela soit pris en compte.

Retour en haut de page

shutdown et systemd

2018

Lorsqu'on lance des programmes qui sont longs, et qu'on veut que le pc s'arrête tout seul dans un certain temps, on utilise une commande du type

shutdown -h "hh:mm" 

Sauf que cela ne fait pas toujours ce qu'on imagine. Les processus sont tués de manière inhabituelle (signaux -TERM et -HUP envoyés quasi simultanément) ce qui peut les empêcher de clotûrer leurs travaux proprement.

C'est toujours plaisant de laisser tourner des programmes des heures voire des jours et de constater à l'issue qu'il y a eu un problème lors de l'extinction de la machine..

Un moyen d'éviter les surprises est d'envoyer ces signaux soi-même avec at (Il y a très probablement plus simple ou plus élégant), sous debian :

sudo apt-get install at

Ajoutez les commandes que vous voulez lancer dans un fichier .sh de votre choix, par exemple :

#!/bin/sh
killall programme1 programme2 programme3 
sync
killall un_autre_programme
sync

killall envoit -TERM par défaut. Ensuite, on peut indiquer qu'on veut l'exécuter à un certain moment, par exemple une heure précise HH:MM, mais il y a moyen de spécifier le moment de toutes sortes de manières. Vous pouvez ajouter votre commande de shutdown différé quand vous avez tout préparé. Exemple :

at -f monfichier.sh "23:57"
sudo shutdown -h "23:59"

On peut utiliser atq pour savoir ce qui est en file d'attente, et d'autres commandes at ou atq pour modifier cette file d'attente..

Retour en haut de page

AAC récalcitrant

2018

Vous avez un fichier avec le flux vidéo (h264), disons, video.mp4, encapsulé dans du mp4, et un fichier avec le flux audio (aac), disons audio.mp4, encapsulé également dans du mp4.. Et vous vous dîtes, je vais faire un fichier mp4 avec les deux. Donc, direction ffmpeg. Et là, c'est le drame : ffmpeg n'arrive pas à lire le fichier aac jusqu'au bout, des headers adts du flux aac ne sont pas compris! Pour les curieux voici l'erreur :

[AVBSFContext @ 0x... ] Error parsing ADTS frame header!
[AVBSFContext @ 0x... ] Failed to send packet to filter 
aac_adtstoasc for stream 0av_interleaved_write_frame(): Invalid 
data found when processing input

Je n'ai pas trouvé de solution satisfaisante, même avec le nouveau ffmpeg 4.x (il faudrait que je remplisse un bug report), Je suppose que le flux aac contient quelque chose qui ne plait pas au filtre aac_adtstoasc. Voici ce que je fais en attendant : Décompresser le fichier mp4 et ensuite mixer en recomprimant (avec perte de qualité audio donc) :

$ ffmpeg -i audio.mp4 audio.wav
$ ffmpeg -i video.mp4 -i audio.wav -acodec aac -vcodec copy output.mp4

Petit truc : pour le voir sur une freebox v5, il suffit de le passer en .ts sans recompression

$ ffmpeg -i output.mp4 -acodec copy -vcodec copy output.ts

A mettre à jour quand on en saura plus.

Retour en haut de page

TNT-HD : passage .ts en mkv

2020

Supposons que vous possédiez un récepteur TNT ou une clé USB capable de recevoir la TNT sur votre ordinateur. Vous avez du travail, donc, vous enregistrez votre émission préferrée, au lieu de la regarder, par exemple avec VLC. Vous désirez voir tout cela dans votre salon, sur la TV familiale en utilisant un media center, ou le lecteur BR, tout cela sans perdre en qualité.

Normalement, cela ne pose aucun problème, vous prenez votre fichier enregistré, disons qu'il s'appelle input.ts, et vous le transformez en mkv avec ffmpeg en lui demandant de ne pas réencoder comme ceci :

$ ffmpeg -i input.ts -c:a copy -c:v copy -c:s copy -map 0 output.mkv

Et là, horreur! Cela ne fonctionne pas, à cause d'une sombre erreur de timestamp, du genre de celle-ci :

[matroska @ 0xxxxxxxxxxxxx] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument

Et bien la solution consiste à installer mkvtoolnix

$ sudo apt-get install mkvtoolnix

Puis à se servir de mkvmerge

$ mkvmerge -o output.mkv input.ts

Et voilà! En prime, la ligne de commande est plus simple. Bien sûr, si votre lecteur de salon comprend les fichiers .ts directement c'est plus simple.

Retour en haut de page

open-plc-tools pour adaptateur CPL

2018

Un projet opensource situé sur github à cette adresse: https://github.com/qca/open-plc-utils permet de gérer pas mal d'équipements compatibles Homeplug AV. Son petit nom c'est : Qualcomm Atheros Open Powerline Toolkit. Il est sous licence BSD. C'est très utile si on veut gérer ses adaptateurs CPL sans installer des MB de logiciel compilés en source fermée et qu'on doit ensuite exécuter en permanence avec les droits du superutilisateur sur la machine (service qui tourne en permanence).

Donc, je récupère les sources, je lis le readme, j'audite les sources, je fais un build local et hop, dans le dossier ./plc il y a des tonnes d'outils utiles pour tout voir, tout configurer.

./plctool sert de frontal, il est capable de gérer tous mes adaptateurs Devolo. Je suis content, parce que Devolo ne livrait plus son utilitaire en ligne de commande pour Linux (sous forme de source) dlanconfig.

Retour en haut de page