<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Emile "iMil" Heitor 's home</title>
	<atom:link href="http://imil.net/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://imil.net/wp</link>
	<description>life, unix and stuff</description>
	<lastBuildDate>Sun, 13 May 2012 10:43:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>sysutils/conky</title>
		<link>http://imil.net/wp/2012/05/13/sysutilsconky/</link>
		<comments>http://imil.net/wp/2012/05/13/sysutilsconky/#comments</comments>
		<pubDate>Sun, 13 May 2012 09:35:02 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[conky]]></category>
		<category><![CDATA[envsys]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[pkgsrc]]></category>
		<category><![CDATA[proplib]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=727</guid>
		<description><![CDATA[Tout ça, c&#8217;est la faute à Guigui2. Et à Nils aussi.
Y&#8217;a quoi, 2/3 semaines, ces deux là me disent que ce serait tellement bieeeen si on avait conky dans pkgsrc et que patati le challeeenge et que patata tellement c&#8217;est beau tellement y&#8217;a des thèmes de ouf et j&#8217;en passe et des meilleures.
Et je regarde.
Et [...]]]></description>
			<content:encoded><![CDATA[<p>Tout ça, c&#8217;est la faute à Guigui2. Et à Nils aussi.</p>
<p>Y&#8217;a quoi, 2/3 semaines, ces deux là me disent que ce serait tellement bieeeen si on avait <a href="http://conky.sourceforge.net/">conky</a> dans <i>pkgsrc</i> et que patati le challeeenge et que patata tellement c&#8217;est beau tellement y&#8217;a des thèmes de ouf et j&#8217;en passe et des meilleures.</p>
<p>Et je regarde.</p>
<p>Et c&#8217;est l&#8217;engrenage.</p>
<p>Deux semaines plus tard donc, je viens d&#8217;importer <code>sysutils/conky</code> dans <i>pkgsrc current</i> avec le support des <i>sensors</i> usuels, CPU (SMP), load, mémoire, réseau, disque ainsi que batterie et température. Et ces deux derniers, c&#8217;étaient pas les plus simples.</p>
<p>En effet, si par exemple <a href="http://www.freebsd.org">FreeBSD</a> dispose de <a href="http://en.wikipedia.org/wiki/Sysctl">sysctl</a> fort conviviaux du type <code>hw.acpi.battery.time</code> ou <code>hw.acpi.battery.life</code>, bin <a href="http://www.NetBSD.org">nous</a> non. Nous on préfère se faire chier avec <a href="http://www.daemon-systems.org/man/envsys.4.html">envsys(3)</a> dont l&#8217;utilisation est expliquée de manière parfaite par ce commentaire trouvé dans <i>sysutils/torsmo</i>:</p>
<pre>
    /*
     * Using the envsys API is like pulling teeth without anesthetic.
     * so just popen envstat and parse the output instead.
     */
</pre>
<p>Ça résume assez bien la situation.<br />
Mais comme je suis un peu sado-maso sur les bords, et que je souhaitais présenter un peu plus que le pourcentage de charge de la batterie, je me suis lancé dans l&#8217;écriture d&#8217;une petite fonction qui simplifie grandement l&#8217;accès aux ressources d&#8217;envsys. En gros ça donne ça:</p>
<pre>
#include &lt;sys /envsys.h&gt;
#include &lt;prop /proplib.h&gt;

#define _DEV_SYSMON "/dev/sysmon"

#define P_BOOL      0
#define P_UINT8     1
#define P_INT64     2
#define P_STRING    3

typedef struct Devquery {
    int         type;
    char        *dev;
    char        *key;
    char        *row;
} Devquery;

int             sysmon_fd;

int8_t envsys_get_val(Devquery, void *);

void
sysmon_open()
{
    sysmon_fd = open(_DEV_SYSMON, O_RDONLY);
}

void
sysmon_close()
{
    if (sysmon_fd > -1)
        close(sysmon_fd);
}

int8_t
envsys_get_val(Devquery dq, void *val)
{
    char *descr;
    const char *cval;
    prop_dictionary_t dict;
    prop_object_t device;
    prop_object_iterator_t iter;
    prop_object_t obj;
    bool rc = false;

    if (sysmon_fd < 0)
        return -1;

    if (prop_dictionary_recv_ioctl(sysmon_fd, ENVSYS_GETDICTIONARY, &#038;dict)
        != 0)
        return -1;

    if ((device = prop_dictionary_get(dict, dq.dev)) == NULL)
        return -1;

    iter = prop_array_iterator(device);

    while((obj = prop_object_iterator_next(iter)))  {
        descr = (char *)prop_string_cstring_nocopy(prop_dictionary_get(obj,
                "description"));
        if (descr != NULL &#038;&#038; *descr) {
            if(strcmp(descr, dq.key) == 0) {
                switch(dq.type) {
                case P_BOOL:
                    rc = prop_dictionary_get_bool(obj,
                        dq.row, (bool *)val);
                case P_UINT8:
                    rc = prop_dictionary_get_uint8(obj,
                        dq.row, (uint8_t *)val);
                    break;
                case P_INT64:
                    rc = prop_dictionary_get_int64(obj, dq.row,
                        (int64_t *)val);
                    break;
                case P_STRING:
                    rc = prop_dictionary_get_cstring_nocopy(obj,
                        dq.row, &#038;cval);
                    val = (void *)cval;
                    break;
                }
            }
        }
    }

    prop_object_iterator_release(iter);
    prop_object_release(dict);

    if (rc == false) {
        val = NULL;
        return -1;
    }

    return 0;
}
</pre>
<p>On utilise la fonction de cette façon:
</pre>
<pre>
    Devquery dq_ac = { P_BOOL, "acpiacad0", "connected", "cur-value" };

    if (envsys_get_val(dq_ac, (void *)&#038;connected) < 0)
</pre>
<p>Dans cet exemple, <code>connected</code> sera placé à 1 si l'élément <code>acpiacad0</code> est connecté, 0 autrement.</p>
<p>Le package n'est pas encore parfait, mais il est désormais tout à fait utilisable. <i>Upstream</i> a été contacté et l'integration de mes patchs est en cours.</p>
<p>Mandatory screenshot:<br />
<a href="http://imil.net/gfx/NetBSD-conky-full.png"><img src="/gfx/NetBSD-conky-full.png"/></a></pre>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/05/13/sysutilsconky/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Une brêve histoire de design</title>
		<link>http://imil.net/wp/2012/04/23/une-breve-histoire-de-design/</link>
		<comments>http://imil.net/wp/2012/04/23/une-breve-histoire-de-design/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 20:31:40 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[colors]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=721</guid>
		<description><![CDATA[Tout commence la semaine dernière, un innocent freelance que nous faisons bosser sur un projet secret de domination des informations galactiques me montre son boulot et ne résiste pas à l&#8217;envie de me montrer des bouts de code. Je ne manque pas de remarquer que son éditeur de texte ne ressemble à rien de connu, [...]]]></description>
			<content:encoded><![CDATA[<p>Tout commence la semaine dernière, un innocent <i>freelance</i> que nous faisons bosser sur un projet secret de domination des informations galactiques me montre son boulot et ne résiste pas à l&#8217;envie de me montrer des bouts de code. Je ne manque pas de remarquer que son éditeur de texte ne ressemble à rien de connu, mais brille par sa simplicité et son élégance. Il m&#8217;annonce fièrement qu&#8217;il travaille sous <i>Sublime Text 2</i>.<br />
Curieux, je recherche l&#8217;outil en question et m&#8217;aperçois avec effroi que non seulement il n&#8217;est pas Libre, mais qu&#8217;en plus que son prix est exorbitant: 59$ pour *une* licence utilisateur, on se croirait revenu à l&#8217;âge d&#8217;or des <i>shareware</i>.<br />
Mais il est sexy son truc. En particulier les couleurs. Bien choisies, harmonieuses. Sexy.</p>
<p>Je fais mon <i>C</i> sous <a href="http://www.gnu.org/software/emacs/">emacs</a> en console, il en a toujours été ainsi, j&#8217;ai mes habitudes de programmation sur cet éditeur, et si je préfère <a href="http://www.vim.org/">vim</a> pour le scripting et l&#8217;édition de texte simple, <i>emacs</i>, depuis 15 ans maintenant, accompagne la totalité de mes projets en <i>C</i>.<br />
Jusqu&#8217;à ce week-end, je ne m&#8217;étais jamais vraiment préoccupé de problématiques liées aux couleurs, aux thèmes où autres considérations futiles. Jusqu&#8217;à ce week-end.</p>
<p>D&#8217;abord, je comprend que mon terminal <i>screené</i> n&#8217;affiche pas plus de 8 couleurs, cela parce que l&#8217;option <code>PKG_OPTIONS.screen+= ncurses</code> n&#8217;est pas présente dans mon <code>/etc/mk.conf</code>, et que cela a pour conséquence que cette condition:</p>
<pre>
.if !empty(PKG_OPTIONS:Mncurses)
CURSES_DEFAULT= ncurses
CONFIGURE_ARGS+=        --enable-colors256
.endif
</pre>
<p>n&#8217;est pas remplie. Résultat, toute tentative d&#8217;utiliser un quelconque thème muni de couleurs un peu originales se solde par un vague pâté difforme à 8 couleurs.<br />
L&#8217;utilisation du script <a href="http://www.frexx.de/xterm-256-notes/data/256colors2.pl">256colors2.pl</a> me confirme qu&#8217;à l&#8217;issue de la recompilation de <i>screen</i> avec les bonnes options, on obtient bien de jolis dégradés:<br />
<img src="/gfx/256colors.png"/></p>
<p><i>Emacs</i> refusait de m&#8217;annoncer plus de 8 couleurs à son tour, quand bien même le terminal qui l&#8217;héberge était désormais muni de super pouvoirs. Rien à faire, <code>M-x list-colors-display</code> ne m&#8217;affichait que 8 ignobles couleurs standard.<br />
Deux choses à faire ici, ajouter un <code>~/.termcap</code> décrivant un terminal de type <code>xterm-256color</code>, et ensuite, démarrer le monsieur de cette façon:</p>
<pre>
$ TERM=xterm-256color emacs
</pre>
<p>N&#8217;exportez pas cette variable dans votre <code>~/.profile</code>, bien d&#8217;autres emmerdes vous attendraient au tournant. J&#8217;ai préféré un vilain <i>alias</i>.</p>
<p>Finalement, je me rend compte que les couleurs présentées par un <i>emacs screené</i> sont assez différentes d&#8217;un <i>emacs non screené</i>. De fil en aiguille, je tombe sur <a href="http://www.xvx.ca/~awg/emacs-colors-howto.txt">cette page</a> sur laquelle on trouve <a href="http://www.splode.com/~friedman/software/emacs-lisp/src/term/xterm-256color.el">ce fichier</a> à placer dans votre <code>~/.emacs.d/term</code> afin de retrouver des couleurs adéquates.</p>
<p>Après des heures de bataille, j&#8217;ai enfin pu bidouiller un des thèmes présents sur <a href="http://www.emacswiki.org/emacs/ColorThemeCollection">emacswiki</a> pour obtenir ceci:<br />
<img src="/gfx/emacs-monokai.png"/><br />
Je suis pas fâché du résultat.</p>
<p>Et comme j&#8217;aime bien partager, voici le <a href="http://imil.net/stuff/color-theme-imil.el">thème</a> et le <a href="http://imil.net/stuff/init.el">init.el</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/04/23/une-breve-histoire-de-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ça va pas être possible avec vos baskets</title>
		<link>http://imil.net/wp/2012/04/22/ca-va-pas-etre-possible-avec-vos-baskets/</link>
		<comments>http://imil.net/wp/2012/04/22/ca-va-pas-etre-possible-avec-vos-baskets/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 08:42:57 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[naxsi]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[pkgsrc]]></category>

		<guid isPermaLink="false">http://imil.net/wp/2012/04/22/ca-va-pas-etre-possible-avec-vos-baskets/</guid>
		<description><![CDATA[Dans ma boîte, l&#8217;équipe sécurité a publié voila quelques mois de cela un module pour nginx: un firewall applicatif du nom de naxsi.
Ce module, sous licence GPLv2, je viens de le publier dans pkgsrc current sous la forme d&#8217;une option de www/nginx. Je me propose de vous montrer ici comment sécuriser simplement votre serveur web [...]]]></description>
			<content:encoded><![CDATA[<p>Dans <a href="http://www.nbs-system.com">ma boîte</a>, l&#8217;équipe sécurité a publié voila quelques mois de cela un module pour <a href="http://wiki.nginx.org/Main">nginx</a>: un firewall applicatif du nom de <a href="http://code.google.com/p/naxsi/">naxsi</a>.</p>
<p>Ce module, sous licence GPLv2, je viens de le publier dans <i>pkgsrc current</i> sous la forme d&#8217;une option de <code>www/nginx</code>. Je me propose de vous montrer ici comment sécuriser simplement votre serveur web / proxy inverse <i>nginx</i> grâce à <i>naxsi</i>.</p>
<p>Premièrement, si comme moi (et comme il se doit) vous utilisez une branche stable de <i>pkgsrc</i>, mettez simplement à jour <code>www/nginx</code> comme ceci:</p>
<pre>
$ cd /usr/pkgsrc/www/nginx
# cvs up -rHEAD -dP
</pre>
<p>Puis spécifiez à <i>pkgsrc</i> que vous souhaitez activer l&#8217;option <i>naxsi</i> pour le paquet <i>nginx</i>:</p>
<pre>
$ grep nginx /etc/mk.conf
PKG_OPTIONS.nginx+=     naxsi
</pre>
<p>Ceci fait, reconstruisez le paquet comme d&#8217;habitude:</p>
<pre>
$ cd /usr/pkgsrc/www/nginx
$ sudo make update clean
</pre>
<p>Dans la configuration de <i>nginx</i>, incluez les règles par défaut de <i>naxsi</i> de cette façon:</p>
<pre>
http {
    include       /usr/pkg/etc/nginx/mime.types;
    include       /usr/pkg/etc/nginx/naxsi_core.rules; # < --- ici
    default_type  application/octet-stream;
</pre>
<p>Comme vous pourrez le constater, le fichier <code>/usr/pkg/etc/nginx/naxsi_core.rules</code> contient un <i>set</i> de règles déjà très efficaces contre bon nombre d'attaques connues.<br />
Reste alors à activer le filtrage sur une <code>location</code> et choisir quels types d'attaques vous souhaitez bloquer; par exemple:
</pre>
<pre>
        location / {
            SecRulesEnabled;
            CheckRule "$SQL >= 8" BLOCK;
            CheckRule "$RFI >= 8" BLOCK;
            CheckRule "$TRAVERSAL >= 4" BLOCK;
            CheckRule "$EVADE >= 4" BLOCK;
            CheckRule "$XSS >= 8" BLOCK;
</pre>
<p>Un redémarrage de <i>nginx</i> plus loin, on essayera par exemple d&#8217;accéder à une adresse louche:</p>
<pre>
$ wget -O- http://coruscant/?../../etc/passwd
--2012-04-22 10:21:01--  http://coruscant/?../../etc/passwd
Resolving coruscant... 192.168.1.2
Connecting to coruscant|192.168.1.2|:80... connected.
HTTP request sent, awaiting response... No data received.
</pre>
<p>Et de constater dans <code>/var/log/nginx/error.log</code>:</p>
<pre>
2012/04/22 10:21:01 [error] 25353#0: *15 NAXSI_FMT: ip=192.168.1.1&#038;server=192.168.1.2&#038;uri=/&#038;total_processed=1&#038;total_blocked=1&#038;zone0=ARGS&#038;id0=1200&#038;var_name0=, client: 192.168.1.1, server: localhost, request: "GET /?../../etc/passwd HTTP/1.0", host: "192.168.1.2"
</pre>
<p>Moi j&#8217;trouve ça assez classe tout de même.</p>
<p>Toutes les infos relatives à la configuration de <i>naxsi</i> sont disponibles <a href="http://code.google.com/p/naxsi/wiki/TableOfContents?tm=6">sur le Wiki</a> de ce dernier.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/04/22/ca-va-pas-etre-possible-avec-vos-baskets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pkgin 0.5.2.3</title>
		<link>http://imil.net/wp/2012/04/09/pkgin-0-5-2-3/</link>
		<comments>http://imil.net/wp/2012/04/09/pkgin-0-5-2-3/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 10:19:06 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Ma vie, mon oeuvre]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[pkgin]]></category>
		<category><![CDATA[pkgsrc]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=716</guid>
		<description><![CDATA[!@#!@# de bug.
Des mois que je cherchais au mauvais endroit, en effet, uniquement chez certains utilisateurs (évidemment), un pkgin up / fug proposait d&#8217;installer l&#8217;univers. Problème dans le moteur de dépendances me dis-je; que de temps perdu à décortiquer ce qui fonctionnait parfaitement, pour finalement tomber sur ceci:

static const struct Summary {
	const int	type;
	const char	*tbl_name;
	const char	*deps;
	const [...]]]></description>
			<content:encoded><![CDATA[<p>!@#!@# de bug.</p>
<p>Des mois que je cherchais au mauvais endroit, en effet, <strong>uniquement</strong> chez certains utilisateurs (évidemment), un <code>pkgin up / fug</code> proposait d&#8217;installer l&#8217;univers. Problème dans le moteur de dépendances me dis-je; que de temps perdu à décortiquer ce qui fonctionnait parfaitement, pour finalement tomber sur ceci:</p>
<pre>
static const struct Summary {
	const int	type;
	const char	*tbl_name;
	const char	*deps;
	const char	*conflicts;
	const char	*requires;
	const char	*provides;
	const char	*end;
} sumsw[] = {
	{
		LOCAL_SUMMARY,
		"LOCAL_PKG",
		"LOCAL_DEPS",
		"LOCAL_CONFLICTS",
		"LOCAL_REQUIRES",
		"LOCAL_PROVIDES",
		NULL
	},
	{
		REMOTE_SUMMARY,
		"REMOTE_PKG",
		"REMOTE_DEPS",
		"REMOTE_CONFLICTS",
		"REMOTE_REQUIRES",
		"REMOTE_PROVIDES",
		NULL
	},
};

[...]

	for (ptbl = __UNCONST(sum.tbl_name), i = 0;
		 i < nelms;
		 ptbl += ((strlen(ptbl) + 1) * sizeof(char)), i++) {
</pre>
<p>Il ne faut PAaaaaaaas coder avec de l'alcool dans le sang, il ne faut <strong>pas</strong>, parce qu'après, on se retrouve avec des bouts de trucs ni faits ni à faire qui supposent que les membres d'une structure seront forcément alignés, et des effets de bords qui n'ont rien à voir.</p>
<p>Bref, <i>stacktic</i> m'a proposé cette méthode, bien plus élégante:
</pre>
<pre>
static const struct Summary {
	const int	type;
	const char	*tbl_name;
	const char	*deps;
	const char	*conflicts;
	const char	*requires;
	const char	*provides;
	const char	*end;
} sumsw[] = {
	[LOCAL_SUMMARY] = {
		LOCAL_SUMMARY,
		"LOCAL_PKG",
		"LOCAL_DEPS",
		"LOCAL_CONFLICTS",
		"LOCAL_REQUIRES",
		"LOCAL_PROVIDES",
		NULL
	},
	[REMOTE_SUMMARY] = {
		REMOTE_SUMMARY,
		"REMOTE_PKG",
		"REMOTE_DEPS",
		"REMOTE_CONFLICTS",
		"REMOTE_REQUIRES",
		"REMOTE_PROVIDES",
		NULL
	},
};

[...]

	/* (REMOTE[LOCAL)_PKG is first -> skip */
	for (arr = &#038;(sum.tbl_name) + 1; *arr != NULL; ++arr) {
</pre>
<p>Aaah, bah oui, tout de suite c&#8217;est moins dégueulasse hein.</p>
<p><i>0.5.2.3</i> est dans <i>current</i>, et le <a href="http://www.netbsd.org/developers/releng/pullups.html">pullup request</a> vient de partir.</p>
<p>meh.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/04/09/pkgin-0-5-2-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@SFR: Vous avez dépassé votre forfait illimité</title>
		<link>http://imil.net/wp/2012/03/03/sfr-vous-avez-depasse-votre-forfait-illimite/</link>
		<comments>http://imil.net/wp/2012/03/03/sfr-vous-avez-depasse-votre-forfait-illimite/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 18:14:27 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Free]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=714</guid>
		<description><![CDATA[FINI! Fini ces pathétiques SMS chaque mois me signalant que j&#8217;ai dépassé mon forfait &#8220;illimité&#8221; (oui, chez SFR ils savent diviser par 0). J&#8217;exulte de savoir que les 3 opérateurs mobile historique bavent de la bile lorsqu&#8217;ils entendent le mot &#8220;Free&#8221;. C&#8217;est toujours déplaisant de se faire mettre le nez dans son caca, l&#8217;acharnement des [...]]]></description>
			<content:encoded><![CDATA[<p>FINI! Fini ces pathétiques SMS chaque mois me signalant que j&#8217;ai dépassé mon forfait &#8220;illimité&#8221; (oui, chez SFR ils savent diviser par 0). J&#8217;exulte de savoir que les 3 opérateurs mobile historique bavent de la bile lorsqu&#8217;ils entendent le mot &#8220;Free&#8221;. C&#8217;est toujours déplaisant de se faire mettre le nez dans son caca, l&#8217;acharnement des affairistes de tout poil contre Wikileaks en est l&#8217;exemple le plus choquant.<br />
Mais je diverge.<br />
Fini SFR donc. Et je devrais les remercier pour leur dernier fait d&#8217;armes; en effet, depuis quelques temps, lorsque l&#8217;on demande à cet opérateur hors de tout soupçons de nous fournir le code de désimlockage de son téléphone portable, ce dernier vous renvoie ceci:<br />
<i>Votre référence Client / Contrat : XXX462 </p>
<p>Monsieur HEITOR,	 </p>
<p>Nous faisons suite à votre demande de désimlockage. </p>
<p>La clé désimlockage de votre mobile est 366209146922791 .</p>
<p>[procédure à suivre]</i><br />
&#8220;Excellent&#8221; me dis-je, c&#8217;est fair play&#8230; mais attendez&#8230; il me dit quelque chose ce code&#8230; ils seront donc minables jusqu&#8217;au bout, le &#8220;code de desimlockage&#8221; ci-dessus n&#8217;est autre que le code <a href="http://fr.wikipedia.org/wiki/International_Mobile_Equipment_Identity">IMEI</a> que j&#8217;avais déjà fourni lors de la demande initiale (le fameux code identifiant votre mobile, obtenu à l&#8217;aide de la séquence <code>*#06#</code>).<br />
Évidemment, un appel au support vous informe qu&#8217;ils ne disposent finalement pas de votre code (mythos de merde) et qu&#8217;il vont ouvrir un dossier chez HTC (le constructeur de mon téléphone) afin de me communiquer le fameux code&#8230; et que cela prend environ 4 semaines. Beaucoup d&#8217;insultes me viennent à l&#8217;esprit, mais finalement, je me console en imaginant l&#8217;immense manque à gagner que Free leur à mis à travers la gueule. Oui je sais, mon langage est peu châtié dans ce post, je trouve ces pratiques tellement pitoyables&#8230;</p>
<p>Mais alors, pourquoi donc devrais-je les remercier ? Et bien parce que cela m&#8217;a obligé à faire quelque chose que j&#8217;avais envie de réaliser depuis un moment déjà, <i>rooter</i> mon <i>Desire HD</i>.<br />
Franchement, ce fut d&#8217;une simplicité déconcertante, tellement simple que j&#8217;éprouve une petite frustration, je n&#8217;ai même pas de tips à vous fournir, rien de croustillant, non, tout est <a href="http://forum.xda-developers.com/showthread.php?t=1259821">là</a> et <a href="http://forum.xda-developers.com/showthread.php?t=1259821">là</a>. Et, <strong>oui</strong>, le <i>Ace Advanced Hack Kit</i> fonctionne parfaitement sous GNU/Linux (et aussi sous osx et l&#8217;autre machin 4 couleurs mais on s&#8217;en fout).</p>
<p>Initialement, j&#8217;avais prévu de <i>rooter</i> mon mobile afin de faire sauter le simlockage, mais dans la foulée, je me dis qu&#8217;une ROM vierge, épurée de toutes les saloperies estampillées SFR et lancées par défaut serait du meilleur effet, et après un minimum de recherche, il m&#8217;a semblé que <a href="http://forum.xda-developers.com/showpost.php?p=9211636&#038;postcount=1">Android Revolution HD</a> était le bon candidat. Et je ne suis pas déçu. Mon téléphone mobile n&#8217;est simplement plus le même device. Rapide, fluide, épuré, et affublé de la ROM radio <code>12.65.60.29_26.14.04.28_M</code> tel que préconisé dans la documentation. Contrairement à ce que j&#8217;ai pu lire ici et là, non, la capacité de ma batterie ne descend pas plus vite chez Free que chez SFR. Au contraire en fait. Peut-être est-ce lié à cette fameuse ROM radio, mais aussi et surtout, m&#8217;est avis que l&#8217;absence de la flopée d&#8217;utilitaires aussi inutiles que SFR musique/TV/concerts que je retrouvais souvent dans la <i>task list</i> doit jouer un rôle :)</p>
<p>Attention, on ne le répétera jamais assez, si vous tentez l&#8217;aventure: <strong>lisez les documentations</strong>. Ces dernières sont très bien faites et répondent à 99% des questions utiles, pour le pourcent restant, il y a l&#8217;<strong>excellent</strong> site <a href="http://forum.xda-developers.com/">xda-developers</a> peuplé de poilus de l&#8217;android.</p>
<p>Comme j&#8217;étais chaud, j&#8217;ai réalisé la même opération sur ma tablette EeePad Transformer, résultat similaire, avec ce petit plus: Android Revolution HD edition Transformer est doté d&#8217;ICS (Ice Cream Sandwitch, aka Android 4.0, la dernière version de l&#8217;OS de google).</p>
<p>Comme je le disais sur <a href="https://plus.google.com">G+</a> hier soir, je comprend pourquoi des milliers de hackers passent des nuits à trafiquer leur ROM, c&#8217;est assez addictif&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/03/03/sfr-vous-avez-depasse-votre-forfait-illimite/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Kidnapping de CPU</title>
		<link>http://imil.net/wp/2012/02/22/kidnapping-de-cpu/</link>
		<comments>http://imil.net/wp/2012/02/22/kidnapping-de-cpu/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 08:36:02 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Ma vie, mon oeuvre]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=710</guid>
		<description><![CDATA[Avec les petits amis de NetBSDfr, nous préparons un projet secret de domination des paquets pkgsrc impliquant de la compilation, beaucoup de compilation. Je dispose pour ce faire d&#8217;une tripotée de machines virtuelles, ne fonctionnant pas forcemment sous NetBSD, mais toutes munies d&#8217;un ou plusieurs CPUs pas forcemment sollicités. Aussi, me suis-je mis dans la [...]]]></description>
			<content:encoded><![CDATA[<p>Avec les petits amis de <a href="http://www.NetBSDfr.org">NetBSDfr</a>, nous préparons un projet secret de domination des paquets <a href="http://www.netbsd.org/docs/software/packages.html">pkgsrc</a> impliquant de la compilation, <a href="http://wiki.netbsd.org/tutorials/pkgsrc/pbulk/">beaucoup de compilation</a>. Je dispose pour ce faire d&#8217;une tripotée de machines virtuelles, ne fonctionnant pas forcemment sous NetBSD, mais toutes munies d&#8217;un ou plusieurs CPUs pas forcemment sollicités. Aussi, me suis-je mis dans la tête d&#8217;utiliser <a href="http://code.google.com/p/distcc/">distcc</a> couplé aux outils de <a href="http://www.netbsd.org/docs/guide/en/chap-build.html">compilation croisée</a> disponibles dans l&#8217;arbre des sources de NetBSD.<br />
L&#8217;opération est étonemment simple.</p>
<p>Je prendrai pour exemple une machine Debian GNU/Linux 6.0. La première étape consiste à installer l&#8217;ensemble des outils nécessaires à la compilation sur cette machine dédiée à la compilation distribuée:</p>
<ul>
<li>gcc</li>
<li>g++</li>
<li>zlib1g-dev</li>
<li>ncurses-base</li>
</ul>
<p>On récupère ensuite l&#8217;arbre des sources, par exemple pour cross-compiler NetBSD 5.1.2:</p>
<pre># pwd
/home/netbsd
# cvs -d anoncvs@anoncvs.fr.netbsd.org:/cvsroot co -rnetbsd-5-1-2-RELEASE src
</pre>
<p>Puis on utilise <code>build.sh</code> afin de construire les outils de compilation croisée déstinés à compiler des binaires NetBSD sur GNU/Linux. Contrairement à ce que dit la documentation officielle, il ne faut <b>pas</b> ajouter le <i>flag</i> <code>-u</code>, qui empêcherait l&#8217;autoconfiguration de <code>nbcompat</code> (oui, on va corriger):</p>
<pre># ./build.sh -m amd64 tools</pre>
<p>À l&#8217;issue de cette construction, vous devriez disposer d&#8217;un nouveau repertoire de type:</p>
<pre>tooldir.Linux-2.6.32-5-xen-amd64-x86_64</pre>
<p>Il faut alors evidemment installer <code>distcc</code> de cette façon:</p>
<p># apt-get install distcc</p>
<p>Et modifier le fichier <code>/etc/default/distcc</code>:</p>
<pre>
STARTDISTCC="true"
# [...]
# Liste des réseaux autorisés à utiliser distcc
ALLOWEDNETS="127.0.0.1 192.168.0.0/24"
# IP d'écoute
LISTENER="192.168.0.7"
###
# IMPORTANT: on modifie le chemin par défaut afin distcc cherche d'abord cpp / gcc / g++ / ar / ld
# dans le repertoire contenant les outils de compilation croisée
###
PATH=/home/netbsd/src/tooldir.Linux-2.6.32-5-xen-amd64-x86_64/x86_64--netbsd/bin:$PATH
</pre>
<p>On démarre <code>distcc</code> simplement:</p>
<pre>/etc/init.d/distcc start</pre>
<p>C&#8217;est prêt !<br />
Il ne reste plus qu&#8217;à indiquer à notre machine NetBSD qu&#8217;elle peut désormais utiliser notre nouvelle machine de compilation, par exemple en ajoutant au fichier <code>/etc/mk.conf</code>:</p>
<pre>PKGSRC_COMPILER=ccache distcc gcc
MAKE_JOBS=4
DISTCC_HOSTS=192.168.0.7 localhost
</pre>
<p>Vous pouvez vous référer à <a href="http://wiki.netbsd.org/tutorials/pkgsrc/build_ccache_distcc/">cette documentation</a> de votre serviteur pour apprendre à préparer <code>distcc</code> sur une machine NetBSD.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/02/22/kidnapping-de-cpu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>multipart/encrypted et alpine</title>
		<link>http://imil.net/wp/2012/02/21/multipartencrypted-et-alpine/</link>
		<comments>http://imil.net/wp/2012/02/21/multipartencrypted-et-alpine/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 08:48:21 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[alpine]]></category>
		<category><![CDATA[GPG]]></category>
		<category><![CDATA[MIME]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=704</guid>
		<description><![CDATA[J&#8217;utilise Alpine comme client mail depuis hmmm&#8230; 15 ans je pense. J&#8217;aime bien Alpine. Oh pitié, épargnez-moi le couplet sur sa license, et renseignez-vous  avant de balancer du FUD.
J&#8217;utilise Alpine donc. Je suis, vous vous en doutez, très satisfait de ce logiciel d&#8217;une stabilité à toute épreuve qui gère mes boites mail fournies de [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;utilise <a href="http://www.washington.edu/alpine/">Alpine</a> comme client mail depuis hmmm&#8230; 15 ans je pense. J&#8217;aime bien Alpine. Oh pitié, épargnez-moi le couplet sur sa license, et <a href="http://www.washington.edu/alpine/overview/legal.html">renseignez-vous </a> avant de balancer du <a href="http://fr.wikipedia.org/wiki/Fear,_uncertainty_and_doubt">FUD</a>.</p>
<p>J&#8217;utilise Alpine donc. Je suis, vous vous en doutez, très satisfait de ce logiciel d&#8217;une stabilité à toute épreuve qui gère mes boites mail fournies de centaines de milliers de mails (1997 &#8211; 2012) comme si elles en contenaient 12. Mais Alpine souffre d&#8217;un problème millénaire: sa -non- gestion des RFC 2015/3156 i.e. les messages <i>multipart/signed et multipart/encrypted</i>. En effet, Alpine, comme nombre d&#8217;autres <a href="http://en.wikipedia.org/wiki/Mail_user_agent">MUA</a> ne respectant pas cette RFC, signe ou chiffre via PGP/GPG dans le corps du message, par le biais d&#8217;outils tiers tels que <a href="http://hany.sk/~hany/software/pinepgp/">pinepgp</a> ou <a href="http://dougbarton.us/PGP/ppf/">pine-pgp-filters</a>.</p>
<p>Bien que ce fonctionnement ne soit pas fondamentalement gênant, il m&#8217;est pénible de sauvegarder un message que l&#8217;on m&#8217;aurait envoyé chiffré afin de visualiser son contenu via <code>gpg -d</code>. Cela m&#8217;empêche, en outre, de simplement pouvoir <i>[r]épondre</i> à un mail chiffré.</p>
<p>Il existe quelques solutions faiblement efficaces, ou encore <a href="http://homepage.ntlworld.com/phil.brooke/topal/rel-74/">des usines à gaz</a> dont j&#8217;ai abandonné le packaging tellement elles me semblaient bancales, mais globalement, rien de simplement satisfaisant.</p>
<p>J&#8217;ai donc décidé d&#8217;orienter ma recherche autour d&#8217;un filtre <a href="http://www.procmail.org/">procmail</a>, mon <a href="http://fr.wikipedia.org/wiki/Mail_Delivery_Agent">MDA</a>.</p>
<p>Pas de solution prémachée, mais quelques boûts à traffiquer un minimum afin d&#8217;obtenir le résultat suivant: lorsque l&#8217;on reçoit un email de type <i>multipart/encrypted</i>, on déplie l&#8217;attachement (le contenu crypté donc) et l&#8217;incrustons dans le corps du message. C&#8217;est pas propre-propre, mais ça fait son taf.</p>
<p>Pour ce faire, j&#8217;ai utilisé les recettes <a href="http://piology.org/.procmailrc.html">de monsieur pi</a>, et surtout <a href="http://www.gnu.org/software/gnats/mimedecode.html">cet exemple</a> d&#8217;utilisation de <code>MIME::Parser</code>. Ainsi, j&#8217;ai modifié le script en question, le résultat est disponible <a href="http://imil.net/stuff/mimedecode.pl">ici</a>, et placé la règle suivante dans mon <code>~/.procmailrc</code>:</p>
<pre>
:0
* ^Content-Type:.*multipart/encrypted
{
        :0c:
        $HOME/mail/pgp_backup
        :0fw
        | $HOME/bin/mimedecode.pl
}
</pre>
<p>J&#8217;attendrai d&#8217;avoir beaucoup plus d&#8217;alcool dans le sang pour m&#8217;attaquer à <i>mail/topal</i>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/02/21/multipartencrypted-et-alpine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un peu de cohérence</title>
		<link>http://imil.net/wp/2012/02/17/un-peu-de-coherence/</link>
		<comments>http://imil.net/wp/2012/02/17/un-peu-de-coherence/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 09:27:48 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Ma vie, mon oeuvre]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=700</guid>
		<description><![CDATA[Donc voila, comme je l&#8217;annonçais sur G+ hier soir, j&#8217;ai migré mon poste de travail de Debian GNU/Linux vers NetBSD au boulot.
Il s&#8217;agit d&#8217;un desktop HP Pavilion de ce type muni d&#8217;un AMD Phenom(tm) II X6 1065T et (malheureusement) d&#8217;une NVidia GT 440. Je dis &#8220;malheureusement&#8221; car comme vous le savez peut-être, nous sommes les [...]]]></description>
			<content:encoded><![CDATA[<p>Donc voila, comme je l&#8217;annonçais sur <a href="https://plus.google.com/107219817074938512538/posts">G+</a> hier soir, j&#8217;ai migré mon poste de travail de Debian GNU/Linux vers NetBSD <strong>au boulot</strong>.</p>
<p>Il s&#8217;agit d&#8217;un desktop HP Pavilion <a href="http://h10010.www1.hp.com/wwpc/fr/fr/ho/WF10a/12454-12454-3329740-64546-64546-5035348.html?jumpid=reg_r1002_frfr&#038;lang=fr&#038;cc=fr">de ce type</a> muni d&#8217;un AMD Phenom(tm) II X6 1065T et (malheureusement) d&#8217;une NVidia GT 440. Je dis &#8220;malheureusement&#8221; car comme vous le savez peut-être, nous sommes les parents pauvres de cette marque de GPU, en l&#8217;occurrence, même le driver <code>nv</code> ne sait que faire de ce device. La solution est radicale: changer de carte graphique. En l&#8217;occurence, j&#8217;avais sous la main une bonne vieille ATI Radeon HD3540, parfaitement supportée par les drivers <code>radeon</code> et <code>radeonhd</code>, avec ce bémol que la 3D n&#8217;est supportée qu&#8217;à titre <a href="http://dri.freedesktop.org/wiki/ATIRadeon#driver_radeon.2BAC8-r600_dri.so">expérimental</a> pour cette série de carte. Ce n&#8217;était pas un problème en soi, il s&#8217;agit d&#8217;une machine de boulot. Le DRI/DRM et <i>Compositing</i>, eux, fonctionnent à merveille:</p>
<pre>info: [drm] Setting GART location based on new memory map
info: [drm] Loading RV620 Microcode
info: [drm] Resetting GPU
info: [drm] writeback test failed ffffffff deadbeef
radeondrm0: interrupting at ioapic0 pin 18
[...]
(II) Initializing built-in extension RENDER
(II) Initializing built-in extension RANDR
(II) Initializing built-in extension COMPOSITE
(II) Initializing built-in extension DAMAGE
(II) AIGLX: Screen 0 is not DRI2 capable
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 14, (OK)
drmOpenByBusid: Searching for BusID pci:0001:01:00.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 14, (OK)
drmOpenByBusid: drmOpenMinor returns 14
drmOpenByBusid: drmGetBusid reports pci:0001:01:00.0
[...]
[~] glxinfo|grep direct
direct rendering: Yes</pre>
<p>Ainsi, suivant <a href="http://imil.net/wp/2009/11/21/netbsd-comme-environnement-de-travail/">mes propres instructions</a>, je travaille désormais sur un bureau GNOME 2 parfaitement fonctionnel et très réactif. <i>Flash</i> est rendu par le logiciel libre <code>gnash</code>, <i>Firefox 8</i> (celui fourni dans <i>pkgsrc 2011Q4</i>) tourne impeccablement.</p>
<p>Notez qu&#8217;en raison d&#8217;un <a href="http://permalink.gmane.org/gmane.os.dragonfly-bsd.kernel/14471">bug</a> <strong>CPU</strong> de certains processeurs AMD Phenom, l&#8217;ordinateur fonctionne sous NetBSD 5.1.2 <strong>i386</strong> et non <i>amd64</i>, cette dernière architecture semblant plus sensible au bug sus-cité.<br />
Le <code>dmesg</code>:</p>
<pre>NetBSD 5.1.2 (RAGNOS) #2: Wed Feb 15 18:53:28 CET 2012
        root@ragnos:/usr/src/sys/arch/i386/compile/RAGNOS
total memory = 3327 MB
avail memory = 3257 MB
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
Hewlett-Packard p6775fr ( )
mainbus0 (root)
cpu0 at mainbus0 apid 0: AMD 686-class, 2900MHz, id 0x100fa0
cpu1 at mainbus0 apid 1: AMD 686-class, 2900MHz, id 0x100fa0
cpu2 at mainbus0 apid 2: AMD 686-class, 2900MHz, id 0x100fa0
cpu3 at mainbus0 apid 3: AMD 686-class, 2900MHz, id 0x100fa0
cpu4 at mainbus0 apid 4: AMD 686-class, 2900MHz, id 0x100fa0
cpu5 at mainbus0 apid 5: AMD 686-class, 2900MHz, id 0x100fa0
ioapic0 at mainbus0 apid 6: pa 0xfec00000, version 21, 24 pins
acpi0 at mainbus0: Intel ACPICA 20080321
acpi0: X/RSDT: OemId <hpqoem ,SLIC-CPC,20100907>, AslId <msft ,00000097>
acpi0: SCI interrupting at int 9
acpi0: fixed-feature power button present
timecounter: Timecounter "ACPI-Fast" frequency 3579545 Hz quality 1000
ACPI-Fast 32-bit timer
pckbc1 at acpi0 (PSKE, PNP0303) (kbd port): io 0x60,0x64 irq 1
pckbc2 at acpi0 (PSMS, PNP0F03) (aux port): irq 12
attimer1 at acpi0 (TMR, PNP0100): io 0x40-0x43 irq 0
pcppi1 at acpi0 (SPKR, PNP0800): io 0x61
midi0 at pcppi1: PC speaker (CPU-intensive output)
sysbeep0 at pcppi1
npx1 at acpi0 (COPR, PNP0C04): io 0xf0-0xff irq 13
npx1: reported by CPUID; using exception 16
hpet0 at acpi0 (HPET, PNP0103): mem 0xfed00000-0xfed003ff
timecounter: Timecounter "hpet0" frequency 14318180 Hz quality 2000
acpibut0 at acpi0 (PWRB, PNP0C0C-170): ACPI Power Button
apm0 at acpi0: Power Management spec V1.2
attimer1: attached to pcppi1
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0
pchb0: vendor 0x1022 product 0x9600 (rev. 0x00)
ppb0 at pci0 dev 2 function 0: vendor 0x1022 product 0x9603 (rev. 0x00)
ppb0: unsupported PCI Express version
pci1 at ppb0 bus 1
pci1: i/o space, memory space enabled, rd/line, wr/inv ok
vga1 at pci1 dev 0 function 0: vendor 0x1002 product 0x95c5 (rev. 0x00)
vga1: WARNING: ignoring 64-bit BAR @ 0x10
vga1: WARNING: ignoring 64-bit BAR @ 0x18
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
wsmux1: connecting to wsdisplay0
radeondrm0 at vga1: ATI Radeon HD 3450
radeondrm0: Initialized radeon 1.29.0 20080613
azalia0 at pci1 dev 0 function 1: Generic High Definition Audio Controller
azalia0: interrupting at ioapic0 pin 19
azalia0: host: 0x1002/0xaa28 (rev. 0), HDA rev. 1.0
ppb1 at pci0 dev 5 function 0: vendor 0x1022 product 0x9605 (rev. 0x00)
ppb1: unsupported PCI Express version
pci2 at ppb1 bus 2
pci2: memory space enabled, rd/line, wr/inv ok
vendor 0x1814 product 0x3090 (miscellaneous network) at pci2 dev 0 function 0 not configured
ppb2 at pci0 dev 10 function 0: vendor 0x1022 product 0x9609 (rev. 0x00)
ppb2: unsupported PCI Express version
pci3 at ppb2 bus 3
pci3: i/o space, memory space enabled, rd/line, wr/inv ok
re0 at pci3 dev 0 function 0: RealTek 8100E/8101E/8102E/8102EL PCIe 10/100BaseTX (rev. 0x05)
re0: interrupting at ioapic0 pin 18
re0: Unknown revision (0x2c000000)
re0: Ethernet address 64:31:50:35:77:3d
re0: using 256 tx descriptors
rgephy0 at re0 phy 7: RTL8169S/8110S/8211 1000BASE-T media interface, rev. 4
rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
ahcisata0 at pci0 dev 17 function 0: vendor 0x1002 product 0x4391
ahcisata0: interrupting at ioapic0 pin 22
ahcisata0: AHCI revision 1.1, 4 ports, 32 command slots, features 0xf722e080
atabus0 at ahcisata0 channel 0
atabus1 at ahcisata0 channel 1
atabus2 at ahcisata0 channel 2
atabus3 at ahcisata0 channel 3
ohci0 at pci0 dev 18 function 0: vendor 0x1002 product 0x4397 (rev. 0x00)
ohci0: interrupting at ioapic0 pin 16
ohci0: OHCI version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
ohci1 at pci0 dev 18 function 1: vendor 0x1002 product 0x4398 (rev. 0x00)
ohci1: interrupting at ioapic0 pin 16
ohci1: OHCI version 1.0, legacy support
usb1 at ohci1: USB revision 1.0
ehci0 at pci0 dev 18 function 2: vendor 0x1002 product 0x4396 (rev. 0x00)
ehci0: interrupting at ioapic0 pin 17
ehci0: dropped intr workaround enabled
ehci0: EHCI version 1.0
ehci0: companion controllers, 3 ports each: ohci0 ohci1
usb2 at ehci0: USB revision 2.0
ohci2 at pci0 dev 19 function 0: vendor 0x1002 product 0x4397 (rev. 0x00)
ohci2: interrupting at ioapic0 pin 18
ohci2: OHCI version 1.0, legacy support
usb3 at ohci2: USB revision 1.0
ohci3 at pci0 dev 19 function 1: vendor 0x1002 product 0x4398 (rev. 0x00)
ohci3: interrupting at ioapic0 pin 18
ohci3: OHCI version 1.0, legacy support
usb4 at ohci3: USB revision 1.0
ehci1 at pci0 dev 19 function 2: vendor 0x1002 product 0x4396 (rev. 0x00)
ehci1: interrupting at ioapic0 pin 19
ehci1: dropped intr workaround enabled
ehci1: EHCI version 1.0
ehci1: companion controllers, 3 ports each: ohci2 ohci3
usb5 at ehci1: USB revision 2.0
piixpm0 at pci0 dev 20 function 0
piixpm0: vendor 0x1002 product 0x4385 (rev. 0x3c)
piixpm0: interrupting at SMIpiixpm0: polling
iic0 at piixpm0: I2C bus
azalia1 at pci0 dev 20 function 2: Generic High Definition Audio Controller
azalia1: interrupting at ioapic0 pin 16
azalia1: host: 0x1002/0x4383 (rev. 0), HDA rev. 1.0
pcib0 at pci0 dev 20 function 3
pcib0: vendor 0x1002 product 0x439d (rev. 0x00)
ppb3 at pci0 dev 20 function 4: vendor 0x1002 product 0x4384 (rev. 0x00)
pci4 at ppb3 bus 4
pci4: i/o space enabled
pchb1 at pci0 dev 24 function 0
pchb1: vendor 0x1022 product 0x1200 (rev. 0x00)
pchb2 at pci0 dev 24 function 1
pchb2: vendor 0x1022 product 0x1201 (rev. 0x00)
pchb3 at pci0 dev 24 function 2
pchb3: vendor 0x1022 product 0x1202 (rev. 0x00)
amdtemp0 at pci0 dev 24 function 3
amdtemp0: AMD CPU Temperature Sensors (Family10h / Family11h)
pchb4 at pci0 dev 24 function 4
pchb4: vendor 0x1022 product 0x1204 (rev. 0x00)
isa0 at pcib0
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
timecounter: Timecounter "TSC" frequency 2900344820 Hz quality 3000
azalia0: codec[0]: ATI R600 HDMI (rev. 0.0), HDA rev. 1.0
audio0 at azalia0: full duplex, playback, capture, independent
azalia1: codec[0]: Realtek ALC888 (rev. 3.2), HDA rev. 1.0
audio1 at azalia1: full duplex, playback, capture, independent
uhub0 at usb0: vendor 0x1002 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 3 ports with 3 removable, self powered
uhub1 at usb1: vendor 0x1002 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 3 ports with 3 removable, self powered
uhub2 at usb3: vendor 0x1002 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 3 ports with 3 removable, self powered
uhub3 at usb5: vendor 0x1002 EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub3: 6 ports with 6 removable, self powered
uhub4 at usb4: vendor 0x1002 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub4: 3 ports with 3 removable, self powered
uhub5 at usb2: vendor 0x1002 EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub5: 6 ports with 6 removable, self powered
ahcisata0 port 1: device present, speed: 3.0Gb/s
ahcisata0 port 2: device present, speed: 1.5Gb/s
wd0 at atabus1 drive 0: <hitachi HDS721010CLA332>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 931 GB, 1938021 cyl, 16 head, 63 sec, 512 bytes/sect x 1953525168 sectors
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
wd0(ahcisata0:1:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA)
atapibus0 at atabus2: 1 targets
cd0 at atapibus0 drive 0: <hp CDDVDW TS-H653T, R7106GFB641682, H6D1> cdrom removable
cd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
cd0(ahcisata0:2:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100) (using DMA)
umass0 at uhub5 port 3 configuration 1 interface 0
umass0: HTC Android Phone, rev 2.00/2.26, addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, 1 lun per target

boot device: wd0
root on wd0a dumps on wd0b
wskbd0 at ukbd0: console keyboard, using wsdisplay0
root file system type: ffs

uhidev1: vendor 0x04d9 USB Keyboard, rev 1.10/3.10, addr 2, iclass 3/0
uhidev1: 2 report ids
uhid0 at uhidev1 reportid 1: input=1, output=0, feature=0
uhid1 at uhidev1 reportid 2: input=3, output=0, feature=0
uhidev2 at uhub1 port 1 configuration 1 interface 0
uhidev2: Dell Dell USB Optical Mouse, rev 2.00/43.01, addr 2, iclass 3/1
ums0 at uhidev2: 3 buttons and Z dir
wsmouse0 at ums0 mux 0
wsdisplay0: screen 1 added (80x25, vt100 emulation)
wsdisplay0: screen 2 added (80x25, vt100 emulation)
wsdisplay0: screen 3 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)
info: [drm] Setting GART location based on new memory map
info: [drm] Loading RV620 Microcode
info: [drm] Resetting GPU
info: [drm] writeback test failed ffffffff deadbeef
radeondrm0: interrupting at ioapic0 pin 18
</hp></hitachi></msft></hpqoem></pre>
<p>Et un petit <a href="http://imil.net/gfx/desktop-iMil-wrk-20120216.png">screenshot</a> pour la route.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/02/17/un-peu-de-coherence/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>pkgin@FOSDEM 2012</title>
		<link>http://imil.net/wp/2012/02/09/pkginfosdem-2012/</link>
		<comments>http://imil.net/wp/2012/02/09/pkginfosdem-2012/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 22:31:28 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[NetBSD]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=698</guid>
		<description><![CDATA[De retour du FOSDEM 2012; 2 jours exceptionnels, des amis, du prosélytisme, des rencontres, des échanges. D&#8217;excellents souvenirs et le rendez-vous est d&#8217;ores et déjà pris pour l&#8217;année prochaine. Merci à tous, et tout particulièrement aux lutins du jardin magique.
Le stand NetBSD que je tenais avec Nicolas, Marc, Nod et Vera était bien animé, bon [...]]]></description>
			<content:encoded><![CDATA[<p>De retour du <a href="http://fosdem.org/2012/">FOSDEM 2012</a>; 2 jours exceptionnels, des amis, du prosélytisme, des rencontres, des échanges. D&#8217;excellents souvenirs et le rendez-vous est d&#8217;ores et déjà pris pour l&#8217;année prochaine. Merci à tous, et tout particulièrement aux lutins du jardin magique.<br />
Le stand NetBSD que je tenais avec Nicolas, Marc, Nod et Vera était bien animé, bon nombre de visiteurs ont montré un fort intérêt pour le projet, ça fait plaisir :)</p>
<p>Voici la présentation <a href="http://imil.net/NetBSD/pkgin-FOSDEM-2012.pdf">traitant de pkgin</a> que j&#8217;ai faite aux BSD devrooms.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2012/02/09/pkginfosdem-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iwpriv mode et kamikaze 7.09</title>
		<link>http://imil.net/wp/2011/12/26/iwpriv-mode-et-kamikaze-7-09/</link>
		<comments>http://imil.net/wp/2011/12/26/iwpriv-mode-et-kamikaze-7-09/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 19:15:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[LiteStation 2]]></category>
		<category><![CDATA[madwifi]]></category>
		<category><![CDATA[OpenWRT]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=693</guid>
		<description><![CDATA[Un p&#8217;tit fix vite fait. J&#8217;utilise, sur une Ubiquiti Litestation 2 le firmware OpenWrt Kamikaze 7.09. Je sais, c&#8217;est vieux, mais plusieurs témoignages de bricking suite à un upgrade en 8.09 ou backfire m&#8217;ont refroidit. Je place généralement mes AP publics en 802.11b afin de porter le plus loin possible. Je réalise ceci via la [...]]]></description>
			<content:encoded><![CDATA[<p>Un p&#8217;tit fix vite fait. J&#8217;utilise, sur une <a href="http://www.ubntstore.eu/ubiquiti-litestation-2.html">Ubiquiti Litestation 2</a> le firmware <a href="https://openwrt.org/">OpenWrt</a> Kamikaze 7.09. Je sais, c&#8217;est vieux, mais plusieurs témoignages de <i>bricking</i> suite à un upgrade en 8.09 ou <i>backfire</i> m&#8217;ont refroidit. Je place généralement mes AP publics en 802.11b afin de porter le plus loin possible. Je réalise ceci via la commande:</p>
<pre># iwpriv ath0 mode 11b</pre>
<p>Sauf que, sur ma LS2, je mangeais l&#8217;erreur suivante:</p>
<pre>Interface doesn't accept private ioctl...
mode (8BE2): Invalid argument</pre>
<p>Rien à faire, ça foire.<br />
J&#8217;ai trouvé un (vilain) hack pour ce problème sur <a href="http://madwifi-project.org/ticket/411">le bug system de madwifi</a>:</p>
<p><i>I get same problem using a Z-COM XG623 minPCI card (AR2413 11b&#038;g modes) in AP mode. The failure is due to ieee80211_check_mode_consistency() that doesn&#8217;t validate 11b (2) mode because current channel (vap->iv_des_channel) is an 11g-dyn (CCK+OFDM) channel. A possible workaround is set current channel to 0 (any channel), select the requested mode (iwpriv athx mode 11b) and then configure again the rigth operating channel. This not fix the problem but allows 11b mode operations.</i></p>
<p>Et effectivement:</p>
<pre># iwconfig ath0 channel 0
# iwpriv ath0 mode 11b
# iwconfig ath0 channel 7</pre>
<p>March.<br />
Reste à rendre ce changement un peu plus élégant en modifiant le fichier <code>/lib/wifi/madwifi.sh</code> à la ligne 105:</p>
<pre>iwconfig "$ifname" channel 0 >/dev/null 2>/dev/null</pre>
<p>puisque de toutes façons, le canal est re-placé un peu plus bas.</p>
<p>Ce bug est probablement une typo et il semble être corrigé dans Kamikaze 8.09.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/26/iwpriv-mode-et-kamikaze-7-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-05-17 22:19:09 by W3 Total Cache -->
