Chiffrage GPG dans Claws mail pour N900 | hidden.bressure.net

Le client mail intégré du N900 ne fait pas de cryptographie. Pas de S/MIME (X509) ni de GPG avec lui. Heureusement que claws mail existe dans le dépot du N900. Moins bien intégré à l’interface du N900 à cause de la taille de l’écran mais il permet surtout de pouvoir envoyer et recevoir des mails cryptés/signés.

La suite sur mon blog caché:

Chiffrage GPG dans Claws mail pour N900 | hidden.bressure.net.

Autorotation des applications Python sous Maemo 5

A screenshot of the Maemo interface on a Nokia...
Image via Wikipedia

La rotation de l’affichage suivant l’orientation du terminal est devenue depuis la PR1.3 une fonctionnalité intégrée au bureau Hildon, si bien que toutes les applications sont encouragées à proposer également la rotation de leur IHM suivant la position du mobile.

La gestion de l’orientation se fait par interception et appel à l’Hardware Abstract Layer (HAL) par le D-Bus. Cela peut en rebuter plus d’un, mais heureusement un hacker (comprendre développeur) australien, Thomas Perl, propose une classe python qui s’occupe de la gestion de l’orientation. Cette classe fait partie de la version maemo5 de gPodder et est disponible en GPL3. C’est donc avec bonheur que toutes les applications python sous Maemo 5 (évidement en GPL3) peuvent accéder à l’autorotation.

La classe en elle-même possède un dépendance sur gpodder et il faudra alors modifier 2 lignes de code relatives à l’internationalisation afin de la réutiliser dans sa propre application. C’est ce que j’ai fait pour ajouter l’autorotation à Gnatirac.

Le libre c’est bon !

Client Picasa pour N900

English: Nokia N900 smartphone (display shows ...
Image via Wikipedia

Le N900 dispose d’une grande capacité de stockage (27 Go) mais cela n’élude pas le besoin de sauvegarde externe qui peut se faire par un script utilisant rsync automatisé par alarmed ou bien par l’utilitaire Caritang qui permet de transférer les médias (photo et vidéo) sur Picasa.

Nous nous intéressons au cas où les médias sont archivés sur Picasa. La consultation des médias ne peut pas se faire aisément sur le terminal. En effet, la version complète utilise un style d’affichage prévu pour les écrans d’ordinateur et non pas pour le petit écran du N900. De plus l’utilisation des javascript mettent déjà à mal la puissance faiblarde du N900 dont le CPU plafonne à 600 Mhz (voire 800 Mhz par overclocking) et l’avènement de nouvelles technologies telles que HTML5 vont rendre le navigateur du N900 inopérant sur les nouveaux sites. Finalement l’utilisation de la version web de picasa n’est donc pas une solution viable.

Un client spécific permettrait d’utiliser correctement les possibilités du terminal (écran, cpu) afin de rendre accessible les média archivés. Mais il semble que ce besoin n’ait pas eu d’écho dans la communauté des développeurs Maemo5: il n’y a pas d’application cliente Picasa pour le N900 ! Alors j’en ai développé une: Gnatirac. Gnatirac utilise le binding python de l’API Gdata pour Picasa Web et permet de naviguer dans les albums et les photos d’un compte picasa. Voilà, le N900 dispose de son client Picasa.

Application généalogique sous Maemo 5/N900

Le N900 est un vieux smartphone qui ne bénéficie plus de l’attention de la communauté Maemo comme à ses débuts fin 2009. Il n’en reste pas moins à mon sens la machine improbable que tous les développeurs du libre et de l’open-source n’avaient osé espérer même si les puristes bouderont leur plaisir en arguant que certains composants du N900 sont propriétaires. Les alternatives comme openmoko ne sont pas au niveau technique ni d’ergonomie du N900.

Même si il s’agit d’une plateforme appelée à mourir, il y a encore des utilisateurs qui comme moi n’hésitent pas à se retrousser la chemise pour développer l’application manquante répondant à leur besoin. En l’occurrence il s’agit d’une application de saisie de relevés généalogique que j’ai appelé sans grande originalité Maegen.

Maegen permet la saisie des informations en mobilité puis de faire leur exportation au format GEDCOM pour les integrer dans tout autre logiciel final. L’interface de Maegen est spécifique au N900 ce qui lui permet d’être plus pratique qu’une application pure GTK de PC que le N900 peut exécuter. La contrepartie est que Maegen se concentre sur les données essentielles permettant de crééer des individus et leur relations.

L’application est disponible sur l’index des paquet python Pypi et dispose d’un Blog. L’installation se fait facilement pourvu que l’on dipose de easy_install sur le terminal. Il suffit alors de faire en temps que root

easy_install maegen

Actuellement l’application est utilisable pour des saisies basiques, l’export GEDCOM fonctionne, le tracé de l’arbre également. Une évolution possible serait l’utilisation du cœur de GRAMPS afin de bénéficier de l’expérience de ce projet et de mutualiser les efforts.

Retour de subversion sur le N900

The view of the front of a Nokia N900
Image via Wikipedia

L’évolution des distributions Linux consiste principalement à s’assurer que les divers logiciels puissent cohabiter entre eux, notamment en vérifiant les dépendances des logiciels vis-à-vis des librairies. Ainsi une simple incompatibilité d’un logiciel avec la version d’une librairie centrale ou d’un logiciel phare de la distribution suffit à écarter celui-ci.

Sous Maemo 5, il existe un paquet subversion qui a cessé de fonctionner depuis une récente mise à jour (PR1.3?). En effet subversion crash sur un segmentation fault. La raison en est la dépendance de subversion vis-à-vis de la librairie APR (Apache Portable Runtime) qui a changé de version mais est devenu incompatible avec le paquet subversion.

Malheureusement le paquet subversion pour N900 est devenu orphelin. Son mainteneur ne va pas repackager une version compatible avec la dernière version de la distribution du système (voir ce thread sur le forum maemo.org). Heureusement que le système de gestion de paquet permet de forcer la version des librairies … Au risque d’introduire de nouvelles incompatibilié.

Ainsi pour refaire fonctionner subversion il suffit de lancer la commande suivante en root

apt-get install libaprutil1=1.3.9-2 libapr1=1.4.2-1

Les versions sont celles qui fonctionnaient avec le paquet subversion pour Maemo 5 au moment où il a été créé.

Distributions Linux pour accès Internet anonyme

Linux Waschmittel
Image by Frank Ristau via Flickr

L’anonymat est une nécessité pour de nombreuses personnes pour lesquelles révéler leur localisation ou laisser des traces sur un ordinateur mettent en danger leur vie. C’est le cas des opposants dans des régimes non démocratiques.
Protéger la localisation se fait par l’utilisation de TOR (The Onion Router) ainsi que par un paramétrage réseau bloquant les accès non “torifiés”. La machine est alors anonymes sur internet car les requêtes qui émanent d’elle transitent par un ensemble de relais TOR dont certain vont être des nœuds de sorties qui changent à intervalles réguliers. Ainsi le site final reçoit des requêtes provenant de localisation multiples changeantes.
Pour ne pas laisser de trace il suffit d’utiliser un système portable sur clé USB. L’utilisateur prendra simplement soin de ne rien écrire sur le disque de la machine, le système sur clé USB utilisant la RAM comme système de fichier temporaire.
L’ensemble des paramétrages pour configurer un tel système est à la porté du grand public. Il existe des distributions dédiées à anonymat:

Le premier, Liberté, contient des fonctionnalités intéressantes comme le cryptage automatique de la partition de l’utilisateur et la génération d’une identité secrète à travers une adresse email secrète en .onion pour communiquer avec d’autres utilisateurs du réseau TOR. Malheureusement je n’ai pas réussi à faire fonctionner cette distribution (version 2011.1 et la snapshot 2011.06.05) sur une clé USB dataTraveler G2 16 Gb sur une première partition. Testé sur 2 machines différentes, le boot échoue et termine sur la ligne de commande.

Le second, Privatix, a le défaut d’être documenté surtout en allemand. Cela complique beaucoup la tâche.

Le dernier, Tails ne propose pas (plus) de cryptage des partitions et semble être fait pour une utilisation en liveCD. Nous choisissons quand même de détailler l’installation de ce dernier car la documentation est en anglais et la traduction française est très suffisante.

Installation de TAILS sur clé USB

Télécharger l’image ISO sur le site du projet .

L’image de la version actuelle 0.7.1 fait 677 Mo. IL nous faut donc une partition de 700 Mo. Créons une première partition de 700 Mo sur la clé USB. Nous utiliserons l’outil GParted disponible dans Ubuntu 11.04.

Le site du projet ne donne pas de précisions pour créer une clé USB bootable. Nous passerons donc par l’outil Unetbootin disponible sur les dépôt d’Ubuntu. Il suffit alors de préciser l’image ISO et la partition de la clé USB où on veut installer TAILS.

L’espace restant de la clé USB peut être utilisé pour une partition crypté. L”outil GParted nous permet de créer une partition en ext4 puis l’outil Utilitaire de disque nous permet de créer une partition crypter en (re)-formatant la 2e partition et en cochant “chiffrer le volume correspondant”.

Voilà, nous avons une clé USB qui nous permet d’utiliser n’importe quelle machine et de se connecter à internet travers le réseau TOR. Attention le système ne persiste rien. Il faudra donc stocker les données à conserver sur la 2nd partition.

Automatisation de la conversion des enregistrements de la Freebox pour N900

Ce billet montre la chaine complète de conversion des enregistrements des chaines de la TNT par une Freebox afin d’être lus par le N900. Il s’appuie sur les articles précédents en y ajoutant l’automatisation de la récupération des fichiers. La chaine de conversion se compose des étapes suivantes:

  1. rapatriement des enregistrements sur le PC
  2. conversion des enregistrement en H264
  3. rapatriement des fichiers convertis sur le N900

Chacune des étapes sera automatisée et s’effectuera par étage c’est-à-dire qu’une étape devra être complète avant de passer à la suivante. La procédure pourra être interrompue à tout moment pour se poursuivre plus tard. L’ensemble de la procédure doit minimiser l’espace disque utilisé et les étapes doivent s’exécuter de manière concurrente pour le mieux (1 en même temps que 3 par ex)

Rapatriement des enregistrements sur le PC

L’accès à la freebox se fait en FTP. La méthode utilisée est celle du miroitage différentiel à l’aide de l’outil lftp. Lftp permet de miroiter un répertoire entier ce qui correspond à notre problématique. Pour cela nous utilisons la commande mirror de lftp. L’aspect différentiel ou incrémental nous permet de reprendre un rapatriement interrompu. C’est l’option -c de la commande mirror. Mais ce n’est pas suffisant. Pour minimiser l’espace disque, une fois le rapatriement fait, les fichiers sont déplacés vers le répertoire de travail de l’étape 2. Il ne faut alors pas que la prochaine exécution de l’étape 1 ramène de nouveau les fichiers déjà traités ( la suppression des enregistrements est volontairement exclue de la procédure). En solution nous conservons la date du dernier mirroitage complet et utilisons l’option –newer-than=aaaammdd de la commande mirror qui parle d’elle-même. Pour finir le script de miroitage ne travaille que si aucun enregistrement n’est en cours. Pour cela nous comparons 2 fois de suite le contenu du répertoire des enregistrements de la Freebox.

En plus des spécificités précédente, ce script comme les autres, utilise la présence d’un fichier .lock pour s’assurer qu’aucune autre instance de lui-même est en train de travailler et rattrape les signaux SIGTERM SIGINT et SIGHUP pour faire le nettoyage qui se limite ici à supprimer les fichiers temporaires et le fichier de verrouillage.

Voici le script de téléchargement des enregistrements:

#!/bin/bash
echo "***********************************"
echo "*                                 *"
echo "*   Freebox record downloader     *"
echo "*                                 *"
echo "***********************************"

INPUT_DIR=.
FINAL_DIR=..
# Change 0000 by the password
CREDENTIAL=freebox,0000
LAST_MIRROR_FILE="$INPUT_DIR/.last_mirror"

# do not allow concurrency
if [ -e "$INPUT_DIR/.lock" ]; then
 exit 1
else
 touch "$INPUT_DIR/.lock"
fi

function cleanup_action {
 rm -f "$INPUT_DIR/.listing1.txt"
 rm -f "$INPUT_DIR/.listing2.txt"
 rm -f "$INPUT_DIR/.lock"
}

function clean_shutdown {
 echo "shutdown sequence..." 
 cleanup_action
 exit 1
}

trap 'clean_shutdown' SIGTERM SIGINT SIGHUP

# do not start download if the freebox is recording
lftp -u $CREDENTIAL -e "open; ls /Disque dur/Enregistrements/ ; quit" hd1.freebox.fr > "$INPUT_DIR/.listing1.txt"
sleep 5
lftp -u $CREDENTIAL -e "open; ls /Disque dur/Enregistrements/ ; quit" hd1.freebox.fr > "$INPUT_DIR/.listing2.txt"
cmp -s "$INPUT_DIR/.listing1.txt" "$INPUT_DIR/.listing2.txt" > /dev/null
if [ $? -eq 0 ]; then
 if [ -e "$LAST_MIRROR_FILE" ]; then 
 LAST_MIRROR=`cat "$LAST_MIRROR_FILE"`
 else
 LAST_MIRROR=0
 fi
 LAST_MIRROR_DATE=`date +%Y%m%d`
 lftp -u freebox,4085 -e "mirror -c --newer-than=$LAST_MIRROR /Disque dur/Enregistrements/ .; quit" hd1.freebox.fr
 # mirroring finished, save the current date because
 # we don't want to download these files again
 echo $LAST_MIRROR_DATE > "$LAST_MIRROR_FILE"
 # move files to processing dir if not buzy
 if [ ! -e "$FINAL_DIR/.lock" ]; then
 mv -u -f *.ts "$FINAL_DIR"
 fi
fi

cleanup_action

Voici le script de tâche cron à mettre dans /etc/cron.hourly

#!/bin/sh
N900_DIR=/home/thierry/Vidéos/n900
cd $N900_DIR/backup
./download.sh
#change thierry by your user
chown  thierry:thierry  $N900_DIR/*.ts

Conversion des enregistrements en H264

Une fois que les fichiers sont déplacés dans le répertoire /home/thierry/Vidéos/n900 un script se charge de les convertir en h264. Ce script commence par s’assurer qu’une autre instance de lui-même n’est pas déjà en train de travailler. La conversion elle même se base sur l’origine du fichier pour déterminer la résolution optimale (voir ce billet). Notons que la commande ffmpeg doit être lancé en arrière-plan car elle tue le shell quand elle se termine (étrange, peut-être spécifique à ma configuration?). Par ailleurs comme la conversion est un processus long, le script n’écrase pas le fichier de destination si il existe déjà. Pour finir le script rattrape les signaux d’interruptions pour faire le ménage. Dans son cas, le ménage consiste surtout à ne pas laisser un fichier converti incomplet. Donc on supprime le fichier en cours de création. Le prochain lancement le récréera. Enfin notons que le script supprime le fichier original une fois sa conversion terminée avec succès.

Voici le fichier de conversion:

#!/bin/bash

echo "***********************************"
echo "*                                 *"
echo "*    video converter for N900     *"
echo "*                                 *"
echo "***********************************"

INPUT_DIR=.
OUTPUT_DIR=$INPUT_DIR/converted

# do not allow concurrency
if [ -e "$INPUT_DIR/.lock" ]; then
 exit 1
else
 touch "$INPUT_DIR/.lock"
fi

function convert_file {
 original_def=$2
 original_file=$1
 converted_file="$OUTPUT_DIR/$original_file.mp4"

 if [ -e "$converted_file" ]; then
 return 1
 fi

 if [ $original_def == "mpeg" ]; then
 SIZE="400x480"
 elif [ $original_def == "dvd" ]; then
 SIZE="592x480"
 elif [ $original_def == "hd" ]; then
 SIZE="640x480"
 elif [ $original_def == "other" ]; then
 SIZE="320x240"
 else
 echo "format $original_def inconnu"
 return 1
 fi

 echo $converted_file > .work_in_progress
 (ffmpeg -i "$original_file" -acodec libfaac -vcodec libx264  -vpre hq -vpre baseline -crf 25 -maxrate 1000k -bufsize 2000k -threads 0 -flags2 -fastpskip  -s "$SIZE" "$converted_file" ) &
 echo $! > .work_pid
 wait       
 if [ $? -eq 0 ]; then
 rm "$original_file"
 fi
 rm .work_pid
 rm .work_in_progress

}

function clean_shutdown {
 echo "shutdown sequence..."
 if [ -e ".work_pid" ]; then
 kill `cat .work_pid`
 rm .work_pid
 fi
 if [ -e .work_in_progress ]; then
 rm "`cat .work_in_progress`"
 rm .work_in_progress
 fi
 rm "$INPUT_DIR/.lock"
 exit 1
}

trap 'clean_shutdown' SIGTERM SIGINT SIGHUP

find $INPUT_DIR -maxdepth 1 -type f ( -name "France 3*.ts" -o -name "France 4*.ts" -o -name "France 5*.ts" -o -name "La Chaîne*.ts" -o -name "NT1*.ts" -o -name "TMC*.ts" ) -print | ( while read i; do convert_file "$i" mpeg; done )

find $INPUT_DIR -maxdepth 1 -type f ( -name "DirectStar*.ts" -o -name "RTL9*.ts" -o -name "AB*.ts" ) -print | ( while read i; do convert_file "$i" dvd; done )

find $INPUT_DIR -maxdepth 1 -type f ( -name "Arte*.ts" -o -name "Direct 8*.ts" -o -name "France 2*.ts" -o -name "NRJ*.ts" ) -print | ( while read i; do convert_file "$i" hd; done )

# this just for any extra video i could put in the process directory
find $INPUT_DIR -maxdepth 1 -type f ( -name "*.mpeg" -o -name "*.vob" -o -name "*.mpg" -o -name "*.avi" ) | ( while read i; do convert_file "$i" other; done )

rm "$INPUT_DIR/.lock"

Voici le script cron à mettre dans /etc/cron.hourly

#!/bin/sh
N900_DIR=/home/thierry/Vidéos/n900
cd $N900_DIR
./convert_all.sh
chown -R thierry:thierry  ./converted

rapatriement des fichiers convertis sur le N900

Le rapatriement des fichiers est assuré par un script qui s’exécute sur le N900 et qui s’appuie sur la présence d’un deamon rsync sur le PC. Le script commence par s’assurer qu’il n’y a pas de conversion en cours sinon il rapatrierait un fichier incomplet. Puis il fait un rsync en spcifiant les options –remove-sent-files et –ignore-existing afin d’une part de libérer du disque sur le PC et d’autre part de limiter le temps de synchronisation en prevenant le rapatriement de fichiers qui seraient convertis en plusieurs fois (possible si on ne supprime pas les enregistrements sur la Freebox).
Voici le fichier de script à placer sur le N900:

#!/bin/sh
LOCAL_REPLAY_DIR=/home/user/MyDocs/.videos/replay
LOCK_FILE=$LOCAL_REPLAY_DIR/.lock
if [ -e $LOCK_FILE ]; then
	rm $LOCK_FILE
fi
rsync 192.168.0.12::"videos/n900/.lock"  $LOCAL_REPLAY_DIR/
if [ -e  $LOCK_FILE ]; then
  exit 1
fi
rsync -v --remove-sent-files --ignore-existing 192.168.0.12::"videos/n900/converted/*.mp4" $LOCAL_REPLAY_DIR

La planification de ce script est dévolue au l’outil Alarmed. On peut par exemple le programmer tous les jours à 7h00.

Cette chaine de conversion permet de libérer son utilisateur des contraintes de copie et de lancement de commande de conversion. Il n’a qu’à programmer les enregistrements pour que quelques heures plus tard ils soient disponibles pour un visionnage en mobilité !

Nitdroid et power-kernel

L’installation automatique de Nitdroid supprime des paquets incompatibles. En plus du menu de démarrage il semble aussi supprimer le noyau dit “power” permettant notement d’overclocker le N900.

Heureusement il suffit de lancer les commandes suivantes pour retrouver le power-kernel accessible depuis le menu de démarrage.

apt-get install kernel-power-bootimg kernel-power-modules
apt-get install multiboot-kernel-power

Installation Android sur N900 sur micro SD de 2Go

Nitdroid est le portage d’Android sur N900. L’installation est facilitée par un script qui s’installe par un

sudo gainroot
apt-get install nitdroid-installer

Ensuite faire

nitdroid

La procédure va alors échouer sur le formattage de la partition linux de la carte sd. En effet le script s’attend à avoir une carte sd avec une partition windows (vfat) et de l’espace libre pour une partition linux (ext3). Il faut donc au préalable, partitionner correctement la carte puisque les cartes vendues sont déja partitionnées avec une seule partition vfat qui prend tout l’espace.
Comme il faut un peut moins de 2 Go pour la partition linux, il suffit comme indiqué dans la procédure manuelle de faire

sfdisk -uM /dev/mmcblk1

Puis rentrer quand sfdisk demande la partition mmcblkp1

,1M,

Enfin faites entrée pour les autres partitions qui normalement seront vides.
N’oubliez pas de répondre par y à la question finale.

Maintenant refaire

sudo gainrooot
nitdroid

La saturation des réseaux mobiles est un fait

Plusieurs articles circulent sur le web pointant du doigt la saturation des réseaux des opérateurs mobiles suite à l’engouement pour les nouveaux usages apportés par les smartphones.

Effectivement le lundi 5 juillet à partir de 11h à courbevoie, je n’avais plus de réseau et il ne m’était même pas possible d’envoyer un SMS. Après un tour du bureau, le problème semblait n’affecter que SFR grand public et pas les autres (Bouygue, SFR entreprise).

Aujourd’hui encore suite au stationnement imprévu du train dans lequel j’étais, les voyageurs se saisirent de leur téléphone pour prévenir de leur retard. Alors que je surfais sur le internet, tout d’un coup, plus aucune connexion.

Ainsi malgrés le discours rassurants des services de communication des opérateur, les utilisateurs sont bien confrontés à la saturation des réseaux. A la décharge des opérateurs, les antennes relais ont pejut-être souffert des gros orages récents.