mercredi 18 février 2015
No sound notifications in hangouts on Ubuntu with Firefox ?
So I have been upset about not having any sound notifications on my Ubuntu box 14.04 ever since I reinstalled everything. So here is a note for the future me, or anyone who has the same issue. After hours of fiddling with Google settings, pavucontrol, etc. it finally came down to one of these two: enable the Google Talk Plugin to "Always Enable" (add-ons / Plugins page of Firefox) instead of "Ask" and install the ubuntu-restricted-extras package to allow mp3 playback in the browser. Not sure which one did the trick for me, but it did, so maybe it can help someone out there.
mardi 6 mai 2014
Recompilation de l'utilitaire "file" pour Synology
TLDR; Solution pour corriger le segfault de "file": remplacer le fichier /opt/lib/libmagic.so.1.0.0 par celui-ci:
https://drive.google.com/file/d/0B9w1DBAb0xtWSDBhdWFadjZyQTg/edit?usp=sharing
file /path/to/something
renvoie la bonne information de fichier mais est suivie d'un segfault:
/path/to/something: RAR archive data, v1d, os: Win32
Segmentation fault (core dumped)
En soi, l'utilitaire reste utilisable en ligne de commande, mais il ne peut plus être appelé dans un script, car dès qu'on essaie de sauver le stdout, le segfault prend le pas et rien n'est sauvé. file /path/to/something | grep . ne renvoie rien, myvar=$(file -b /path/to/something) est vide.
--- apprentice.c.old 2014-05-06 09:57:34.154444863 +0200
+++ apprentice.c 2014-05-06 09:59:03.834446304 +0200
@@ -348,11 +348,9 @@
protected void
file_ms_free(struct magic_set *ms)
{
- size_t i;
if (ms == NULL)
return;
- for (i = 0; i < MAGIC_SETS; i++)
- mlist_free(ms->mlist[i]);
+ mlist_free(ms->mlist[0]);
free(ms->o.pbuf);
free(ms->o.buf);
free(ms->c.li);
Recompiler (comme pour rsyncrypto) avec:
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/opt/
CC=arm-marvell-linux-gnu-gcc ARCH=arm make
(en cas de problème de compilation, il vous faudra peut être installer file5.12 sur votre machine compilante et/ou transférer votre fichier synology /opt/share/misc/magic.mgc vers votre répertoire source de compilation)
Puis transférer le fichier résultat: src/.libs/libmagic.so.1.0.0 (qui sera ainsi non-strippé par ailleurs, de même que le binaire file situé au même endroit mais qu'il n'est pas nécessaire de transférer, lui) vers le Synology, dans /opt/lib/
Lien vers le fichier libmagic.so.1.0.0 recompilé pour DS-207+:
https://drive.google.com/file/d/0B9w1DBAb0xtWSDBhdWFadjZyQTg/edit?usp=sharing
Pour info, mais non-nécessaire, le lien vers le binaire file recompilé, non-strippé:
https://drive.google.com/file/d/0B9w1DBAb0xtWdVFyT0d2TmNFVHM/edit?usp=sharing
(NB: le core dump se fait dans /volume1/@file.core , pour tout autre système, vous pouvez savoir où se trouve votre coredump en faisant:
cat /proc/sys/kernel/]core_pattern
Pour plus d'info: Read /usr/src/linux/Documentation/sysctl/kernel.txt.
file /path/to/something
gdb file /volume1/@file.core
avec des versions de file et libmagic.so.1.0.0 recompilées pour ne pas être strippées.
Puis les commandes gdb classiques: "bt", ...
)
https://drive.google.com/file/d/0B9w1DBAb0xtWSDBhdWFadjZyQTg/edit?usp=sharing
Le problème
Depuis la dernière mise à jour ipkg, l'utilitaire "file" ne marche que partiellement sur mon Synology DS 207+. Symptômes:file /path/to/something
renvoie la bonne information de fichier mais est suivie d'un segfault:
/path/to/something: RAR archive data, v1d, os: Win32
Segmentation fault (core dumped)
En soi, l'utilitaire reste utilisable en ligne de commande, mais il ne peut plus être appelé dans un script, car dès qu'on essaie de sauver le stdout, le segfault prend le pas et rien n'est sauvé. file /path/to/something | grep . ne renvoie rien, myvar=$(file -b /path/to/something) est vide.
La solution
Il faut recompiler file, en version 5.12. Pour cela, installer le toolchain, comme expliqué dans l'article sur rsyncrypto. Puis, télécharger le code de file-5.12, ici: ftp://ftp.astron.com/pub/file/file-5.12.tar.gz . L'extraire, et modifier le fichier src/apprentice.c ainsi:--- apprentice.c.old 2014-05-06 09:57:34.154444863 +0200
+++ apprentice.c 2014-05-06 09:59:03.834446304 +0200
@@ -348,11 +348,9 @@
protected void
file_ms_free(struct magic_set *ms)
{
- size_t i;
if (ms == NULL)
return;
- for (i = 0; i < MAGIC_SETS; i++)
- mlist_free(ms->mlist[i]);
+ mlist_free(ms->mlist[0]);
free(ms->o.pbuf);
free(ms->o.buf);
free(ms->c.li);
Recompiler (comme pour rsyncrypto) avec:
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/opt/
CC=arm-marvell-linux-gnu-gcc ARCH=arm make
(en cas de problème de compilation, il vous faudra peut être installer file5.12 sur votre machine compilante et/ou transférer votre fichier synology /opt/share/misc/magic.mgc vers votre répertoire source de compilation)
Puis transférer le fichier résultat: src/.libs/libmagic.so.1.0.0 (qui sera ainsi non-strippé par ailleurs, de même que le binaire file situé au même endroit mais qu'il n'est pas nécessaire de transférer, lui) vers le Synology, dans /opt/lib/
Lien vers le fichier libmagic.so.1.0.0 recompilé pour DS-207+:
https://drive.google.com/file/d/0B9w1DBAb0xtWSDBhdWFadjZyQTg/edit?usp=sharing
Pour info, mais non-nécessaire, le lien vers le binaire file recompilé, non-strippé:
https://drive.google.com/file/d/0B9w1DBAb0xtWdVFyT0d2TmNFVHM/edit?usp=sharing
(NB: le core dump se fait dans /volume1/@file.core , pour tout autre système, vous pouvez savoir où se trouve votre coredump en faisant:
cat /proc/sys/kernel/]core_pattern
Pour plus d'info: Read /usr/src/linux/Documentation/sysctl/kernel.txt.
[/proc/sys/kernel/]core_pattern is used to specify a core dumpfile pattern name.Pour debugger cela, vous auriez eu besoin de gdb sur le syno, puis de faire du gdb à coup de :
If the first character of the pattern is a '|', the kernel will treat the rest of the pattern as a command to run. The core dump will be written to the standard input of that program instead of to a file.
file /path/to/something
gdb file /volume1/@file.core
avec des versions de file et libmagic.so.1.0.0 recompilées pour ne pas être strippées.
Puis les commandes gdb classiques: "bt", ...
)
lundi 31 janvier 2011
Ajout de ldd sous Synology
Par défaut, il n'y a pas LDD sur le synology DS-207+
Voici une méthode simple pour en obtenir un:
Ouvrir sa boite linux préférée, et taper:
Eventuellement l'ouvrir et éditer la première variable RTLDLIST pour enlever la lib 64 bits si vous avez pris votre ldd depuis un 64 bits
Il vous faut bash :
ipkg install bash
Et voilà. Utilisation de LDD:
bash ldd mon_executable
Edit:
J'ai aussi découvert ce lien :
http://benjamin-balet.info/multimedia/synology/il-ny-a-pas-dutilitaire-ldd-sur-mon-syno/ qui permet d'obtenir sensiblement les mêmes résultats avec des paquets ipkg.
Voici une méthode simple pour en obtenir un:
Ouvrir sa boite linux préférée, et taper:
which ldd
Copier le fichier renvoyé sur le synologyEventuellement l'ouvrir et éditer la première variable RTLDLIST pour enlever la lib 64 bits si vous avez pris votre ldd depuis un 64 bits
Il vous faut bash :
ipkg install bash
Et voilà. Utilisation de LDD:
bash ldd mon_executable
Edit:
J'ai aussi découvert ce lien :
http://benjamin-balet.info/multimedia/synology/il-ny-a-pas-dutilitaire-ldd-sur-mon-syno/ qui permet d'obtenir sensiblement les mêmes résultats avec des paquets ipkg.
Compilation de rsyncrypto pour le Synology DS-207+
Ce week end, j'ai décidé de compiler rsyncrypto pour le Synology DS-207+. Je vous livre la procédure suivie sur mon Ubuntu.
NB: je n'ai pas testé l'option pour zipper les contenus mais je livre quand meme la procédure qui devrait fonctionner meme si elle n'est pas complète
Tout d'abord, télécharger le toolchain pour cross compiler sous Ubuntu: http://en.sourceforge.jp/projects/sfnet_dsgpl/downloads/DSM%203.0%20Tool%20Chains/Marvell%2088F5281%20Linux%202.6.15/gcc343_glibc232_88f5281.tgz/
Passer root:
Se mettre en mode de développement:
Télécharger argtable 2.12 et compiler:
http://www.icewalkers.com/Linux/Software/51540/argtable.html
Télécharger openssl et le compiler (juste pour avoir la lib et les headers, je suis sur qu'il y a un moyen plus simple basé sur un retrieve depuis le syno, mais ceci marche pour moi)
http://www.openssl.org/source/openssl-1.0.0c.tar.gz
Télécharger rsyncrypto (moi j'ai chopé les sources via la commande SVN indiquée sur sourceforge) et compiler:
Copier les fichiers générés vers le synology
cp rsyncrypto/rsyncrypto{,_recover} argtable2-12/src/.libs/libargtable2.so.0.1.7 SYNOLOGY
su le DS207+:
Pour gzip: le gzip fourni doit marcher mais ne sera pas optimisé pour l'utilisation avec rsyncrypto. Du coup il est conseillé de télécharger le patch suivant:
télécharger gzip 1.3.13
http://article.gmane.org/gmane.comp.gnu.gzip.bugs/258
URL du patch:
http://svn.exactcode.de/t2/trunk/package/archiver/gzip/gzip.rsync.patch
copier la section du patch à proprement parler: (starting at --- +++ lines), remplacer tous les 'b/' avec des '' et placer le fichier obtenu dans le répertoire src de gzip (nommé patch)
Pour ajouter ligne 150 (sous le #ifndef):
Enjoy
PS: edit: les fichiers compilés sont mis à disposition ici: http://dl.free.fr/alw7TCU1a . s'ils n'y sont plus, contactez moi pour une copie.
NB: je n'ai pas testé l'option pour zipper les contenus mais je livre quand meme la procédure qui devrait fonctionner meme si elle n'est pas complète
Tout d'abord, télécharger le toolchain pour cross compiler sous Ubuntu: http://en.sourceforge.jp/projects/sfnet_dsgpl/downloads/DSM%203.0%20Tool%20Chains/Marvell%2088F5281%20Linux%202.6.15/gcc343_glibc232_88f5281.tgz/
Passer root:
sudo su
Décompresser l'archive dans un répertoire: moi dans /home/user/src/tar xzvf ../Downloads/gcc343_glibc232_88f5281.tgz
mv usr/local/arm-marvell-linux-gnu/ .
Se mettre en mode de développement:
cd arm-marvell-linux-gnu/bin
PATH="$PATH:/home/user/src/arm-marvell-linux-gnu/bin/:/usr/bin:/bin"
Télécharger argtable 2.12 et compiler:
http://www.icewalkers.com/Linux/Software/51540/argtable.html
tar xzvf /home/user/Downloads/argtable2-12.tar.gz
cd argtable2-12
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
cp src/.libs/libargtable2.so* ../../lib/
cd ..
Télécharger openssl et le compiler (juste pour avoir la lib et les headers, je suis sur qu'il y a un moyen plus simple basé sur un retrieve depuis le syno, mais ceci marche pour moi)
http://www.openssl.org/source/openssl-1.0.0c.tar.gz
tar xzvf /home/user/Downloads/openssl-1.0.0c.tar.gz
cd openssl-1.0.0c/
export cross=arm-marvell-linux-gnu-
./Configure dist
make CC="${cross}gcc" ARCH=arm AR="${cross}ar r" RANLIB="${cross}ranlib"
cp libcrypto.a ../../lib/
cd ..
Télécharger rsyncrypto (moi j'ai chopé les sources via la commande SVN indiquée sur sourceforge) et compiler:
cp -r path_to_rsyncryptoSVN/rsyncrypto/tags/V1.12/ rsyncrypto
cd rsyncrypto
./bootstrap
ln -s ../openssl-1.0.0c/include/openssl/ .
ln -sf /home/user/src/arm-marvell-linux-gnu/bin/argtable2-12/src/argtable2.h /home/user/src/arm-marvell-linux-gnu/include/argtable2.h
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
make all-am
cd ..
Copier les fichiers générés vers le synology
cp rsyncrypto/rsyncrypto{,_recover} argtable2-12/src/.libs/libargtable2.so.0.1.7 SYNOLOGY
su le DS207+:
ln -s libargtable2.so.0.1.7 libargtable2.so.0
ln -s libargtable2.so.0.1.7 libargtable2.so
mv libargtable2.so* /lib
ldconfig
Pour gzip: le gzip fourni doit marcher mais ne sera pas optimisé pour l'utilisation avec rsyncrypto. Du coup il est conseillé de télécharger le patch suivant:
télécharger gzip 1.3.13
http://article.gmane.org/gmane.comp.gnu.gzip.bugs/258
URL du patch:
http://svn.exactcode.de/t2/trunk/package/archiver/gzip/gzip.rsync.patch
copier la section du patch à proprement parler: (starting at --- +++ lines), remplacer tous les 'b/' avec des '' et placer le fichier obtenu dans le répertoire src de gzip (nommé patch)
patch -p0 < patch
J'ai aussi du modifier le temps de la compilation le fichier/home/brehon/src/arm-marvell-linux-gnu/bin/../lib/gcc/arm-marvell-linux-gnu/3.4.3/../../../../arm-marvell-linux-gnu/sys-include/getopt.hPour ajouter ligne 150 (sous le #ifndef):
#ifdef YANNICK
et ligne 164 (sous la déclaration __getopt_internal)#endif /*Yannick*/
La compilation se fait ensuite comme précédemment./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
et on peut copier les fichiers générés vers le syno :) voilà.Enjoy
PS: edit: les fichiers compilés sont mis à disposition ici: http://dl.free.fr/alw7TCU1a . s'ils n'y sont plus, contactez moi pour une copie.
jeudi 25 novembre 2010
Toujours ce mauvais modem routeur N150
Cette belle merde ne sait pas ce qu'est une DMZ.
Si je mets une machine dans la DMZ, en fait il n'est juste plus couvert par le firewall. Un vrai modem routeur doit envoyer toutes les connections entrantes sur des ports non réservés vers la DMZ... le N150 les filtre.
Impossible du coup de rendre mon N150 transparent.
Je voulais faire:
N150 -- DDWRT -- Machines
Impossible, car il faut déclarer sur le N150 tous les ports à envoyer vers le DDWRT, et cela est limité à 20.
Et avec en plus le besoin d'UPnP pour faire du SIP, j'ai abandonné.
J'ai remplacé le N150 par un Netgear. Ca a marché directement comme attendu, le SIP marche sans le moindre forward de ports déclaré grace à l'UPnP du DDWRT, bref, je suis enfin content.
Je maudis Belkin.
Si je mets une machine dans la DMZ, en fait il n'est juste plus couvert par le firewall. Un vrai modem routeur doit envoyer toutes les connections entrantes sur des ports non réservés vers la DMZ... le N150 les filtre.
Impossible du coup de rendre mon N150 transparent.
Je voulais faire:
N150 -- DDWRT -- Machines
Impossible, car il faut déclarer sur le N150 tous les ports à envoyer vers le DDWRT, et cela est limité à 20.
Et avec en plus le besoin d'UPnP pour faire du SIP, j'ai abandonné.
J'ai remplacé le N150 par un Netgear. Ca a marché directement comme attendu, le SIP marche sans le moindre forward de ports déclaré grace à l'UPnP du DDWRT, bref, je suis enfin content.
Je maudis Belkin.
mercredi 30 juin 2010
La lente mort de Bonzy

Je crois malheureusement que mon petit Bonzy se meurt. Après avoir passé, il y a un mois et demi de cela, une semaine tout seul sans arrosage dans une canicule surprise, la femme de ménage me l'a innondé d'eau sans ma permission. Je ne sais pas ce qui l'a tué, mais il reste désespérement sec, malgré mon espoir de le raviver avec un arrosage normal. Comme vous le constatez, il est sec, se dépérit, pert ses feuilles qui sont toutes blanches et pique du nez.
Ici, on l'appelle désormais "la branche de romarin séchée", c'est dire à quel point on y croit...
Published with Blogger-droid v1.3.8
L'enfer des mauvais modems routeurs
Aujourd'hui j'ai voulu faire une amélioration de ma config réseau. Pour des raisons logistiques, cela impliquait pas mal de démontage de prises, déplacement d'équipements. J'ai passé presque 3 heures à tester toute ma config, tout ça pour me rendre à l'évidence: mon modem routeur Belkin N150 est une brave merde.
Alors voilà, tout a commencé lorsque j'ai voulu faire du SIP depuis mon nouveau joli androphone. Bizarrement, je n'arrivais pas à envoir de son en SIP. Pourtant, j'avais déjà fait du SIP facilement avec le même provider (freephonie) dans un autre réseau. Après avoir mis en cause free, innocenté mes configs logicielles par moults tests, je me suis rendu conmpte que l'absence de son (dans les 2 sens) après l'établissement de la communication provenait de mon réseau. Documentation prise, SIP établit une session RTP depuis le port 8000 par défaut. A tout hasard, j'ouvre donc le port 8000 de mon routeur modem et bam le son passe. Après une courte hésitation, je décide qu'il est temps de changer ma config réseau.
Situation avant: un Belkin modem routeur (premier prix Surcouf des modems adsl2+, nécessaire en belgique) pour l'accès web. Branché sur une patte LAN de mon WRT qui sert de DHCP, point d'accès Wifi et switch avec mes autres équipements ethernet.
Situation après: le N150 est en point à point avec le WRT sur sa patte WAN, et le switch LAN WRT irrigue mon réseau local+un nouveau switch basique déballé pour l'occasion. Je mets sur le N150 une DMZ pointant sur le WRT, de façon à rendre le N150 transparent. Ou crois-je. Plus d'une heure après, je me rends compte que la DMZ ne fonctionne en fait que si je réactive le firewall du N150, sans quoi il refuse toute connection externe non explicitement ouverte par la page de config de l'ouverture de ports (limitée de plus à 20 ports et aucun range: la classe.). Donc je réactive le firewall, youpi, la DMZ fonctionne. Je me retrouve avec une config à peu près fonctionnelle (je passe, ou pas finalement, sur le grand nombre de déco WIFI liées au déplacement du WRT vers une zone polluée par trop d'autres WIFI et/ou liées à l'orientation des antennes et liées également, ça c'est sur, au reparamétrage des fonctions routeur: à chaque reparamétrage ou presque, on perdait le wifi quelques secondes).
Sauf que du coup, le firewall (enfin, je le suspecte) empêche le passage du son SIP, va savoir pourquoi. En tous cas, mon WRT ne reçoit aucune connexion sur le port 8000, donc j'en déduis que c'est le N150 qui filtre arbitrairement.
A ce moment là, j'ai donc le choix: garder ma nouvelle config mais ne plus avoir le SIP du tout, ou remettre l'ancienne et forcer le SIP sur l'IP de mon android, mais personne d'autre ne peut faire de SIP. Pour l'instant je choisis donc le retour en arrière. Dommage, car ça me bloque pour mon prochain upgrade qui n'aurait marché qu'avec le WRT en série avec le N150: router les paquets bittorrent et eux uniquement via une connexion VPN ipredator. Mais je ne perds pas espoir: dès lors que j'aurai la main sur un modem ADSL2+ digne de ce nom, je réessaie! Beaucoup plus simplement maintenant car toute la config est prête, les équipements sont bien disposés, il n'y a plus qu'un cable à déplacer sur le DDWRT.
Mon conseil: n'achetez pas pour votre modem une merde Belkin. Soit un WRT qui fait modem (ça existe sûrement), soit un vrai modem digne de ce nom (Livebox, freebox, ou autre. dès que j'aurai testé un linksys je referai un post)
PS: ah et pour bien ruiner les logs de dd wrt, il est impossible de désactiver l'upnp du N150. Vraiment un article de qualité ce N150
Alors voilà, tout a commencé lorsque j'ai voulu faire du SIP depuis mon nouveau joli androphone. Bizarrement, je n'arrivais pas à envoir de son en SIP. Pourtant, j'avais déjà fait du SIP facilement avec le même provider (freephonie) dans un autre réseau. Après avoir mis en cause free, innocenté mes configs logicielles par moults tests, je me suis rendu conmpte que l'absence de son (dans les 2 sens) après l'établissement de la communication provenait de mon réseau. Documentation prise, SIP établit une session RTP depuis le port 8000 par défaut. A tout hasard, j'ouvre donc le port 8000 de mon routeur modem et bam le son passe. Après une courte hésitation, je décide qu'il est temps de changer ma config réseau.
Situation avant: un Belkin modem routeur (premier prix Surcouf des modems adsl2+, nécessaire en belgique) pour l'accès web. Branché sur une patte LAN de mon WRT qui sert de DHCP, point d'accès Wifi et switch avec mes autres équipements ethernet.
Situation après: le N150 est en point à point avec le WRT sur sa patte WAN, et le switch LAN WRT irrigue mon réseau local+un nouveau switch basique déballé pour l'occasion. Je mets sur le N150 une DMZ pointant sur le WRT, de façon à rendre le N150 transparent. Ou crois-je. Plus d'une heure après, je me rends compte que la DMZ ne fonctionne en fait que si je réactive le firewall du N150, sans quoi il refuse toute connection externe non explicitement ouverte par la page de config de l'ouverture de ports (limitée de plus à 20 ports et aucun range: la classe.). Donc je réactive le firewall, youpi, la DMZ fonctionne. Je me retrouve avec une config à peu près fonctionnelle (je passe, ou pas finalement, sur le grand nombre de déco WIFI liées au déplacement du WRT vers une zone polluée par trop d'autres WIFI et/ou liées à l'orientation des antennes et liées également, ça c'est sur, au reparamétrage des fonctions routeur: à chaque reparamétrage ou presque, on perdait le wifi quelques secondes).
Sauf que du coup, le firewall (enfin, je le suspecte) empêche le passage du son SIP, va savoir pourquoi. En tous cas, mon WRT ne reçoit aucune connexion sur le port 8000, donc j'en déduis que c'est le N150 qui filtre arbitrairement.
A ce moment là, j'ai donc le choix: garder ma nouvelle config mais ne plus avoir le SIP du tout, ou remettre l'ancienne et forcer le SIP sur l'IP de mon android, mais personne d'autre ne peut faire de SIP. Pour l'instant je choisis donc le retour en arrière. Dommage, car ça me bloque pour mon prochain upgrade qui n'aurait marché qu'avec le WRT en série avec le N150: router les paquets bittorrent et eux uniquement via une connexion VPN ipredator. Mais je ne perds pas espoir: dès lors que j'aurai la main sur un modem ADSL2+ digne de ce nom, je réessaie! Beaucoup plus simplement maintenant car toute la config est prête, les équipements sont bien disposés, il n'y a plus qu'un cable à déplacer sur le DDWRT.
Mon conseil: n'achetez pas pour votre modem une merde Belkin. Soit un WRT qui fait modem (ça existe sûrement), soit un vrai modem digne de ce nom (Livebox, freebox, ou autre. dès que j'aurai testé un linksys je referai un post)
PS: ah et pour bien ruiner les logs de dd wrt, il est impossible de désactiver l'upnp du N150. Vraiment un article de qualité ce N150
Inscription à :
Articles (Atom)