Tuner TNT Gigabyte U7000 sous Ubuntu Gutsy

Je viens de m’acheter une clef USB récepteur TNT Gigabyte U7000, pour un prix dérisoire (25€). Premier point, je ne peux que féliciter Gigabyte pour la présentation et l’emballage de cette clef TNT. Le soin apporté à cette boite me fait penser à un produit Apple. C’est sympa, même s’il est vrai que ce n’est pas la boite que l’on achète ;-). La carte est livrée avec un petit câble USB pour pouvoir la brancher sans quelle gêne les prises avoisinantes, et une antenne télescopique magnétique. J’ai essayer d’utiliser la carte avec cette antenne, mais je ne captais absolument rien à l’intérieur, et l’antenne collée à l’extérieur sur rambarde de ma fenêtre me donnait une image pleine d’artefact. Bref, à moins d’habiter au pied de la tour, je ne pense pas que cette antenne soit d’un grand secours. Je me suis rabattu sur la prise et le râteau collectif de mon immeuble pour un résultat impeccable… Enfin, point important pour les zappeurs fou comme moi, le temps nécessaire pour changer de chaîne est plus que raisonnable (de l’ordre de la seconde). J’ai eu l’occasion de tester plusieurs cartes TNT sous Linux, et en général, je trouvais qu’elles étaient toutes très lentes pour se caler sur un nouvelle chaîne (sans doute lié à des pilotes mal ou peu optimisé).

Bon, passons maintenant aux détails de l’installation sous Linux. Malheureusement, cette carte est trop récente pour être correctement détectées sous Ubuntu Gutsy. Le pilote est là, mais il ne reconnaît les identifiants de la carte. La solution, compiler les derniers pilotes en provenance du projet v4l-dvb. Il faut aller télécharger les sources du pilote.

Ensuite, il faut s’assurer que l’on à les entêtes de son noyaux installé, et les outils pour compiler :

sudo apt-get install build-essential linux-headers-2.6.22-14

Ensuite, il suffit de décompresser les sources, compiler et installer le pilote :

tar jxvf v4l-dvb-3a880d2669a6.tar.bz2 cd v4l-dvb-3a880d2669a6 make sudo make install

Ensuite, il faut copier le firmware dans /lib/firmware.

sudo cp dvb-usb-dib0700-1.10.fw /lib/firmware/

Si l’on avait déjà des modules lié au DVB de chargé, il faut les décharger, ou rebooter.

Enfin, il suffit de brancher la clef, puis d’installer Kaffeine pour regarder la TV.

sudo apt-get install kaffeine


Lors du premier lancement, Kaffeine détecte le récepteur TNT, et propose d’utiliser le mode de recherche des canaux automatiques vu que la carte le supporte. Il est aussi possible, pour aller plus vite de sélectionner dans le menu l’émetteur que l’ont reçoit pour aller plus vite (dans mon cas, il s’agit de fr-Rouen). Ensuite, il faut aller dans le menu DVB, sélectionner le sous menu chaîne et lancer une recherche. Une fois la recherche terminée, il suffit de clicker sur « Télévion numérique » et de se détendre ;-).

Pour utiliser le récepteur avec VLC, il faut d’abord créer un fichier de chaîne avec l’utilitaire scan en lui spécifiant la liste des transpondeurs de l’émetteur dont on dépend. N’ayez pas peur, ce n’est pas compliqué, il est livré avec des listes pré établies pour les émetteurs français.

sudo apt-get install dvb-utils scan -o zap /usr/share/doc/dvb-utils/examples/scan/dvb-t/fr-Rouen > channels.conf vlc channels.conf

Enfin, pour utiliser la clef TNT avec mplayer, il faut copier le fichier channels.conf (le même que celui généré pour VLC) dans ~/.player/channels.conf, avant de lancer mplayer en spécifiant le media dvb://. On peut aussi spécifier directement la chaîné en entrant dvb://TF1.

cp channels.conf ~/.mplayer/channels.conf mplayer dvb:// mplayer dvb://TF1

Enfin, petite déconvenue, j’ai essayer de mettre cette clef sur mon IBM T30, mais je n’ai pas pu car cette machine n’est équipée que de port USB 1.1. Je en pensais pas qu’elle puisse être si vieille. En bref, le pilote s’en est plain car la carte n’est pas équipée de filtre de PID, ce qui veux dire qu’elle ne pas capable, sur le transpondeur qu’elle écoute, de séparer la chaîne que l’on souhaite suivre. En fait, elle transmet les flux de toutes les chaînes au pilote qui se charge alors d’extraire le flux de la chaîne. En conséquence, elle utilise bien plus de bande passante que ce qu’un port USB 1.1 ne peut supporté. Pas de chance, je ne pourrais pas la brancher sur mon T30. Mais j’ai trouvée une solution de remplacement. Je branche la carte TNT sur mon PC fixe, et j’active la fonction de diffusion de Kaffeine avec les paramètres suivant : adresse de diffusion 192.168.0.255 et port de diffusion 1234. Ensuite, sur mon portable, je lance VLC je lui demande d’écouter un flux UDP sur le port 1234. Le seul inconvénient de cette méthode est que je ne peux pas zapper. Je pense que le port de contrôle de Kaffeine doit servir à cela, mais je n’ai pas encore trouvé de documentation à son sujet.

Pour conclure, malgré le fait quelle ne soit pas encore reconnu automatiquement par Linux, je suis très content de cette carte TNT.

Faites un geste pour moi…


SFR, je ne veux bien faire un geste pour la nature, mais par pour ton portefeuille… Je veux bien passez à l’e-facture si le coût de mon abonnement est réduit des économies que tu fait en ne m’envoyant plus de facture !

J’en ai marre de ces boîtes qui sous couvert d’écologie en profite pour nous culpabiliser et surtout s’en mettre plein les poches… Ça me refait pensez aux sac plastiques payants dans les supermarchés…

Hello tout le monde, et un petit truc sympa pour les présentations !

Vous connaissez les addon Firefox ? Mais si, ces petites bêtes qui rajoutent plein de fonctionnalités toutes moins utiles les unes que les autres ?
Après tous, on dit bien que tout ce qui est inutile est indispensable, alors voici mon dernier plugin en date (15min), et dès la première prise en main, …

CA ROX !

Je vous laisse installer ça et m’en dire des nouvelles :

http://www.piclens.com/site/firefox/tutorial_pl_ff_16.php
(avec le petit accent à la Portal, mdr !!! Le bon vieux discours commercial)

Sinon, pour la petite prez, moi c’est Teedee, cousin de Puyb, et je suis là sur la photo :

Je suis au centre, mais faut-il penser à regarder le texte alternatif :p poils aux tifs

Transformer un autoradio en ampli

On m’a volé la façade de mon autoradio… Je ne pensait pas que c’était possible… Surtout que l’autoradio en question n’est pas vraiment très sexy, c’est un modèle MP3 FirstLine qui m’avait coûté moins de 100€. Je me demande bien ce que le voleur peut faire d’une façade d’autoradio…

Bon, c’est bien gentil tout ça, mais je n’ai plus de musique dans ma voiture… Je ne suis pas très chaud pour racheter un autoradio, surtout que mon autoradio sans façade, ça reste quand même un autoradio… Tout est dedans, il ne me manque que la clef ;-).

J’ai donc décider de le transformer en amplificateur. En fait, ça ne changera pas beaucoup, car, c’est déjà a cela qu’il me servait. Je n’utilisait quasiment pas la radio ou la lecture de CD ou de MP3, mais je branchait systématiquement un lecteur MP3 externe ou mon téléphone portable dessus.

Je me suis donc lancé dans une petite séance de reverse engineering. Le principe est simple :

  1. Démonter l’autoradio
  2. Identifier les différents composants et leur fonctions
  3. Trouver l’amplificateur, et les alimentation électrique
  4. Trouver les documentations des composants
  5. Modifier légèrement le circuit pour réussir à activer l’amplificateur et lui amener mon signal audio

La première étape était plutôt simple. Quelques vis, un peu de tôle, et la carte mère est visible. Ensuite, l’amplificateur est facile a trouver, c’est un gros circuit intégré collé à un imposant dissipateur. C’est un TDA7684, un quadruple amplificateur bridgé de 35W. Il est utilisé quasiment dans la configuration du datasheet. Les autres composants sont le TDA7461 (un mixer/equalizer pilotable en I2C), la radio est confiée à une carte fille, un micro-contrôleur TDA72321 et a un TDA7478 (démodulateur RDS), une carte fille dédié au décodage MP3 (soit depuis l’USB ou la carte SD, ou depuis le CD), ainsi qu’un micro-contrôleur Samsung S3P8325 connecté au lecteur de CD, a la carte MP3, à la façade, et au bus I2C (radio et mixeur).

Donc comment récupérer l’ampli. Une des solution possible serait de me connecter au bus I2C pour piloter le mixeur et acheminer le signale audio en provenance des entrées externe jusqu’à l’ampli. Pour plus de simplicité, j’ai préférer court-circuiter le mixer et acheminer directement le signal aux entré de l’ampli. J’ai donc coupé les pistes pour isoler l’entrée du mixer et le mixer de l’ampli, et j’ai utiliser quelques fils volant pour les relier.

Le second problème était que les entrées ST-BY et MUTE était pilotée par le micro-contrôleur, j’ai donc trouvé le 5V sur la carte mère et j’ai forcé ces deux entrées au 5V. Enfin, j’ai installer un interrupteur sur l’alimentation générale.

Et me voilà avec un amplificateur parfaitement fonctionnel pour ma voiture… Bon, je suis content de moi, et ça m’a fait plaisir de toucher de nouveau à mon fer a souder, il commençait à s’ennuyer… 😉

Transformer un site web en un livre

Le livre sur Django rédigé de manière collaborative entre les auteurs de Django et les internautes est disponible en ligne sous la licence GNU Free Documentation. Il est publié en ligne sous forme d’une série de pages HTML… Pas très pratique pour le lire tranquillement dans le canapé… J’ai donc décidé de l’imprimer…

J’aurais pu me contenter de l’imprimer en utilisant la fonction imprimer de mon butineur favoris, mais :

  • Le résultat n’aurait pas été très bon…
  • Ça n’aurait pas été très marrant…

J’ai décider d’utiliser les fonctions du CSS pour faire quelque chose de potable… Le CSS, on l’utilise souvent pour afficher des choses à l’écran, mais on l’utilise rarement pour imprimer. Pourtant, dans sa version 3 (qui n’est malheureusement pas assez supporté par les butineurs), on peut avoir un contrôle assez précis de ce que l’on imprime.

On peut par exemple gérer les entêtes et pieds de pages, les pages recto/verso, les sauts de page, la numérotation des chapitres et figures, les notes en pieds de page, etc…

Mais si les navigateurs ne supporte pas comme il faut le CSS 3, quel est l’intérêt de tout ça… Et bien, il existe un outils (propriétaire, mais gratuit pour un usage personnel) nommé prince, qui permet de générer un PDF à partir d’un fichier HTML et qui comprend correctement le CSS 3… Parfait, donc à l’attaque…

En premier lieu, je me suis fait un scripts python pour extraire le contenu des différents chapitres du livre depuis le site djangobook.com. Ce script utilise le module BeautifulSoup, qui permet une manipulation aisé des fichiers HTML (un peu à la manières des fonctions de manipulation du DOM en javascript). Le script récupère successivement toutes les pages, extrait le contenu du div ayant la classe « yui-b » et aglomère le tout dans un fichier res.html.

from BeautifulSoup import BeautifulSoup as Soup from urllib import urlopen f=file('res.html', 'w') base_url = 'http://www.djangobook.com/en/1.0/' base_url = 'http://www.djangobook.com/en/1.0/' + 'chapter%02d/' for i in range(1, 21): #] + ['appendix%s/' % chr(i) for i in range(ord('A'), ord('I'))]:         print i         soup = Soup(urlopen(base_url % i))         content = soup.find('div', attrs={'class': 'yui-b'})         f.write(content.renderContents()) f.close() 

Le fichier ainsi généré est loin d’être conforme xhtml, c’est pour cela qu’un deuxième script se charge de le rendre un peu plus conforme, mais aussi de générer les liens correspondant à la table des matières.

from BeautifulSoup import BeautifulSoup from BeautifulSoup import Tag, NavigableString soup = BeautifulSoup(file('res.html')) hs = soup.findAll(['h%d' % i for i in range(4)]) ll = 2 toc = Tag(soup, 'div') toc['class'] = 'toc' soup.insert(0, toc) t = Tag(soup, 'h1') t.insert(0, NavigableString('Table of Contents')) toc.insert(0, t) t = Tag(soup, 'ul') t['class'] = 'toc' toc.insert(1, t) for i in range(len(hs)):         h = hs[i]         h['id'] = 'chapter%d' % i         l = int(h.name[1])         h.name = 'h%d' % (l - 1)         if l > ll:                 t = Tag(soup, 'ul')                 t2.insert(9999999, t)         elif l < ll:                 for j in range(ll - l):                         t = t.parent.parent         t2 = Tag(soup, 'li')         t3 = Tag(soup, 'a')         t3['href'] = '#chapter%d' % i         t4 = NavigableString(h.renderContents())         t.insert(9999999, t2)         t2.insert(0, t3)         t3.insert(0, t4)         ll = l cns = soup.findAll(attrs={'class': lambda x: x and 'cn' in x.split()}) for i in range(len(cns)):         cns[i]['id'] = 'cn%s' % i for i in soup.findAll(attrs={'class': lambda x: x and 'system-messages' in x.split()}):         i.extract() print """<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>The Definitive Guide to Django: Web Development Done Right</title> <meta name="author" content="Adrian Holovaty, Jacob Kaplan-Moss"/> <link rel="stylesheet" type="text/css" href="boom.css"/> </head> <body>""" print soup.prettify() print """</body> </html>""" 

A partir de là, j’obtiens un fichier html à peu près correct (il y a encore plein de balises avec des id identiques…). Je peux donc y appliquer un CSS pour l’imprimer. Je suis parti du fichier CSS donner dans l’excellent article sur A List Appart. J’ai modifier la taille des pages, les marges, et la façon d’afficher les illustrations, les légendes ou les notes. Au bout d’une heure de tatonement, je suis parvenu à obtenir le résultat suivant, et je suis plutôt content de moi…

Update 20/02/2008 : J’ai fait quelques corrections…

Vista et le pirates

Microsoft : Ecran noir pour les pirates de Vista. En gros, si WGA détecte que votre version de Windows Vista est piraté, vous avez une heure pour vous mètre en règle, c’est a dire :

  • Si vous êtes un pirate (pas bien):
    • Acheter Windows Vista
    • Installer Linux
  • Si vous n’êtes pas un pirates (pas bien non plus, vous utilisez quand même Windows !):
    • Racheter Windows Vista
    • Tenter de prouver votre bonne fois auprès de Microsoft.
    • Installer Linux

Mais vous me direz : Si on a acheter Windows Vista, on ne peut pas être détecter comme un pirate ! Hein ?
Et bien non, c’est sans compter sur le fait que WGA peut tomber en panne. J’en veux pour preuve la panne sur les serveur WGA, il y a moins d’un mois qui a mis quelques dizaines de milliers (d’après Microsoft), dans les choux pendant quelques jours !

Je ne comprend pas pourquoi tant de gens utilisent encore Windows, surtout si c’est une version pirate !

Update 14/09/2007 : D’après Windows Secrets, il semblerai que cette mise à jours de Windows soit installée à l’insu des utilisateurs. Windows Update modifie le système même si les mises à jours automatiques sont désactivées…

Marre de me faire traiter de voleur…

… quand je vais au cinéma… Vous n’avez pas remarqué, que maintenant, quand on fait partie de la minorité * qui hypothèque sa maison ** pour se payer une place de cinéma plutôt que de télécharger un DivX, on se fait systématiquement accusé d’être un voleur…

Ça m’énerve ! Après le prix, c’est la deuxième raison qui fait que je vais de moins en moins au cinéma…


Via Tristan Nitot.

* : Minorité, d’après les déclarations alarmistes des majors hollywoodiennes… D’après la queue sur la parking du cinéma, il semblerai qu’il y en ai tout de même encore quelques un 😉
** : 9€ la place… cought !!!

Faudra qu’on m’explique !

Si on ne peut pas se les mettre dans les oreilles, ça sert a quoi alors ?

Ça n’arrive pas souvent !

On s’occupe comme on peut 😉

Je ne veux pas d’un iPhone

Du moins dans la version actuelle.

Rui Camo résume assez bien mon avis sur ce téléphone :

The iPhone is brilliantly designed, has a supremely satisfactory user experience, but it feels, in a way, like the smartphone segment’s Rain Man – wondrous storage, polished performance, but low social skills and the inability to do simple things that most people take for granted.

Soit dans la langue de Molière :

L'iPhone est brillamment conçus, a une expérience utilisateur extrêmement satisfaisante, mais semble, dans un sens, être le Rain Man des smartphones : une mémoire merveilleuse, une exécution impeccable, mais une forte inaptitude sociale et l'incapacité à faire des choses simples que la plupart des gens prennent pour acquises.

Je garde mon Sony Ericsson k800i !