Sheeva Plug et CM15 Pro

Posted by geekeriemascagne@free.fr on 24 août 2010 in Domotique, Sheeva plug, Ubuntu |

Hello world,

Le CM15 Pro de chez Marmitek est un controleur domotique X10, doté d’un transmetteur sans fil. On peut le connecter à un pc, grâce à son interface usb. Contrairement à son ancêtre le CM11, ce contrôleur n’est pas très ouvert au monde des pingouins. Néanmoins, il existe plusieurs développements en cours, qui ne permettent pas d’utiliser toutes les fonctions de ce module, mais qui assureront mes bidouilles sous linux ! Pour ma part je me suis basé sur le driver de Neil Cherry et sur l’excellent tuto de Poulpy.

Marmitek CM15 Pro

Sur une architecture Arm tel que le Sheeva Plug, l’installation est plus complexe. En effet afin de compiler le driver de Neil Cherry , il faut avoir les linux-headers, c’est à dire les kernel de son noyau. Sur le Sheeva, la commande “apt-cache search linux-headers-$(uname -r)” ne me retournait rien. Après divers recherches, les headers de chaque noyau sont soi disant disponible ici. Surement, mais je n’ai jamais pu les utiliser correctement…
Du coup , j’ai télécharger mon noyau officiel et j’ai décider de le compiler, afin d’obtenir des linux-headers propres et fonctionnelles.

>cd /home/jb/source/

#téléchargement du noyau

>wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.tar.bz2
>tar jxvf linux-2.6.34.1.tar.bz2

# téléchargement des patches pour noyau de type “Sheeva”

>wget http://sheeva.with-linux.com/sheeva/2.6.33/patches/UdlFb-0.2.3-2.6.30.2.patch
>wget http://sheeva.with-linux.com/sheeva/2.6.33/patches/linux-2.6.29-usb-serial-evdo.patch
>wget http://sheeva.with-linux.com/sheeva/2.6.33/patches/linux-2.6.32-sheeva-sata.patch
>wget http://sheeva.with-linux.com/sheeva/2.6.33/patches/mvsdio-1-2.6.30.patch
>wget http://sheeva.with-linux.com/sheeva/2.6.33/patches/mvsdio-2.patch

#Installation de paquet pour la compilation

>apt-get install patch libncurses5-dev

# Patch du noyau

>cd linux-2.6.33
>patch -p1 <../UdlFb-0.2.3-2.6.30.2.patch
>patch -p1 <../linux-2.6.29-usb-serial-evdo.patch cd linux-2.6.34.1
>patch -p1 <../linux-2.6.32-sheeva-sata.patch
>patch -p1 <../mvsdio-1-2.6.30.patch
>patch -p1 <../mvsdio-2.patch

#Compilation

>wget http://sheeva.with-linux.com/sheeva/2.6.33/sheeva-2.6.33.config
>mv sheeva-2.6.33.config .config
>make menuconfig
>make

Voila après plus de 2h de compilation, je n’ai plus quà faire pointer mon répertoire des headers (/lib/modules/2.6.33/) dans le répertoire de ce noyau compilé.

>ln -s /home/jb/source/linux-2.6.33/ /lib/modules/2.6.33/build
l>n -s /home/jb/source/linux-2.6.33/ /lib/modules/2.6.33/source

J’ai pu ensuite télécharger et installer le driver du CM15.

>wget http://www.linuxha.com/common/iplcd/iplc-driver.tgz
>tar zxf iplc-driver.tgz
>cd iplc/driver/linux-2.6/cm15a.d
>make
>insmod cm15a.ko

Avant de compiler le driver, j’ai du modifié le fichier cm15a.c en changeant les lignes “/include/linux/autoconf.h” en “/include/generated/autoconf.h”.

Voila mon driver de mon module domotique opérationel, prêt à satisfaire mes geekeries et mascagnes….

Mots-clefs :, , , , , ,

13 Comments

  • Math dit :

    Marrant, je suis en train de faire exactement la même chose … Et je reste bloqué au même endroit que toi ! lol
    Du coup j’ai suivi tes étapes mais j’ai toujours le même message d’erreur …

    Puis-je t’exposer mon problème et obtenir un peu d’aide car la compilation de noyau linux c’est pas trop mon truc…

    Voilà ce que j’ai fait :
    1- télécharger le noyau sur le site de kernel.org (linux-2.6.32.tar.bz2), détaré (long…)
    2 – télécharger aussi les patch et appliqué sur le nouveau noyau
    3 – make du noyau (3h chez moi …)
    4 – Appliqué les liens symboliques comme toi

    Voici :

    ***********************************
    La version du noyau : (le mien est une version space finissant par “0007-g…”
    ***********************************
    root@sheevaplug-debian:/# uname -ar
    Linux sheevaplug-debian 2.6.32-00007-g56678ec #1 PREEMPT Thu Dec 24 03:15:48 PST 2009 armv5tel GNU/Linux

    ***********************************
    Ce qui se trouve dans …. là : ;)
    ***********************************
    root@sheevaplug-debian:/lib/modules# ll 2.6.32-00007-g56678ec/
    total 656
    lrwxrwxrwx 1 root root 24 2010-09-05 16:25 build -> /media/usb1/linux-2.6.32
    drwxr-xr-x 8 root root 544 2010-02-08 11:51 kernel
    -rw-r–r– 1 root root 118676 2010-02-08 11:51 modules.alias
    -rw-r–r– 1 root root 69 2010-02-08 11:51 modules.ccwmap
    -rw-r–r– 1 root root 67730 2010-02-08 11:51 modules.dep
    -rw-r–r– 1 root root 73 2010-02-08 11:51 modules.ieee1394map
    -rw-r–r– 1 root root 141 2010-02-08 11:51 modules.inputmap
    -rw-r–r– 1 root root 81 2010-02-08 11:51 modules.isapnpmap
    -rw-r–r– 1 root root 74 2010-02-08 11:51 modules.ofmap
    -rw-r–r– 1 root root 15388 2010-02-08 11:51 modules.order
    -rw-r–r– 1 root root 281 2010-02-08 11:51 modules.pcimap
    -rw-r–r– 1 root root 43 2010-02-08 11:51 modules.seriomap
    -rw-r–r– 1 root root 41592 2010-02-08 11:51 modules.symbols
    -rw-r–r– 1 root root 390425 2010-02-08 11:51 modules.usbmap
    lrwxrwxrwx 1 root root 24 2010-09-05 15:57 source -> /media/usb1/linux-2.6.32

    ***********************************
    Mon lien symbolique pointant sur le noyau compilé et patché pour mon sheevaplug :
    ***********************************
    root@sheevaplug-debian:/lib/modules# ll /media/usb1/linux-2.6.32
    total 17624
    drwxr-xr-x 25 domos domos 4096 2009-12-03 03:51 arch
    drwxr-xr-x 2 domos domos 4096 2010-09-05 14:32 block
    -rw-r–r– 1 domos domos 18693 2009-12-03 03:51 COPYING
    -rw-r–r– 1 domos domos 94031 2009-12-03 03:51 CREDITS
    drwxr-xr-x 3 domos domos 20480 2010-09-05 15:47 crypto
    drwxr-xr-x 85 domos domos 12288 2009-12-03 03:51 Documentation
    drwxr-xr-x 88 domos domos 4096 2010-09-05 15:08 drivers
    drwxr-xr-x 36 domos domos 4096 2010-09-05 15:55 firmware
    drwxr-xr-x 70 domos domos 12288 2010-09-05 14:26 fs
    drwxr-xr-x 22 domos domos 4096 2010-09-05 16:19 include
    drwxr-xr-x 2 domos domos 4096 2010-09-05 15:44 init
    drwxr-xr-x 2 domos domos 4096 2010-09-05 14:27 ipc
    -rw-r–r– 1 domos domos 2430 2009-12-03 03:51 Kbuild
    drwxr-xr-x 7 domos domos 12288 2010-09-05 13:48 kernel
    drwxr-xr-x 6 domos domos 12288 2010-09-05 15:51 lib
    -rw-r–r– 1 domos domos 159885 2009-12-03 03:51 MAINTAINERS
    -rw-r–r– 1 domos domos 55203 2009-12-03 03:51 Makefile
    drwxr-xr-x 2 domos domos 4096 2010-09-05 13:51 mm
    -rw-r–r– 1 root root 0 2010-09-05 16:19 modules.order
    -rw-r–r– 1 root root 305690 2010-09-05 15:46 Module.symvers
    drwxr-xr-x 48 domos domos 4096 2010-09-05 15:42 net
    -rw-r–r– 1 domos domos 17459 2009-12-03 03:51 README
    -rw-r–r– 1 domos domos 3371 2009-12-03 03:51 REPORTING-BUGS
    drwxr-xr-x 6 domos domos 4096 2009-12-03 03:51 samples
    drwxr-xr-x 12 domos domos 4096 2010-09-05 13:41 scripts
    drwxr-xr-x 7 domos domos 4096 2010-09-05 14:27 security
    drwxr-xr-x 21 domos domos 4096 2010-09-05 15:54 sound
    -rw-r–r– 1 root root 1086439 2010-09-05 15:45 System.map
    drwxr-xr-x 3 domos domos 4096 2009-12-03 03:51 tools
    drwxr-xr-x 2 domos domos 4096 2010-09-05 13:41 usr
    drwxr-xr-x 3 domos domos 4096 2009-12-03 03:51 virt
    -rwxr-xr-x 1 root root 7676973 2010-09-05 15:45 vmlinux
    -rw-r–r– 1 root root 8481594 2010-09-05 15:44 vmlinux.o

    ***********************************
    Et voici les messages d’erreurs que je récolte après toutes ces galères :
    ***********************************

    root@sheevaplug-debian:/media/usb1/iplc/driver/linux-2.6/cm15a.d# make
    make -C /lib/modules/2.6.32-00007-g56678ec/build SUBDIRS=/media/usb1/iplc/driver/linux-2.6/cm15a.d modules
    make[1]: Entering directory `/media/usb1/linux-2.6.32′
    CC [M] /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.o
    /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.c: In function âopenâ:
    /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.c:523: warning: passing argument 6 of âusb_fill_int_urbâ from incompatible pointer type
    /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.c: In function âwriteâ:
    /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.c:803: warning: passing argument 6 of âusb_fill_int_urbâ from incompatible pointer type
    /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.c: In function âprobeâ:
    /media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.c:943: error: implicit declaration of function âinfoâ
    make[2]: *** [/media/usb1/iplc/driver/linux-2.6/cm15a.d/cm15a.o] Error 1
    make[1]: *** [_module_/media/usb1/iplc/driver/linux-2.6/cm15a.d] Error 2
    make[1]: Leaving directory `/media/usb1/linux-2.6.32′
    make: *** [default] Error 2

    Pour info, je n’ai pas trouvé dans cm15a.c la ligne en question que tu as modifié :
    “/include/linux/autoconf.h” en “/include/generated/autoconf.h”.
    Ce que je crois comprendre c’est que les sources de mon noyau fraichement compilé ne sont toujours pas bonne et qu’il n’est pas capable d’aller trouver les header qu’il lui faut pour compiler ce foutu driver !!

    Merci pour l’aide que tu pourrais bien m’apporter .
    Bien à toi …
    Math

    • geekeriemascagne@free.fr dit :

      Slt,

      pour le autoconf.h, c’est à la ligne 178 du fichier cm15a.c.
      J’ai aussi commenté la ligne 948 (// goto exit ;) de ce même fichier.

      Mais a mon avis, tu n’a pas télécharger le bon noyau correspondant sur http://www.kernel.org. Il faut que tu télécharge le noyau linux-2.6.32.7.Car le noyau actuel de ton Sheeva n’est pas le 2.6.32. Comme tu le dis, c’est un peu “space”, la fin du résultat de ton uname” 0007-g56678e”. Si j’étais à ta place, je monterais en version je compilerais le noyau sur le Sheeva en 2.6.33 ou 2.6.34
      (si tu montes ton Sheeva en 2.6.33, je peux te donner le driver fonctionnel)

      bon courage, tiens moi au courant!

      • Math dit :

        Merci pour ta réponse !
        Effectivement, j’y avais pensé aussi… mais ce qui me fait un peu peur c’est d’avoir un kernel panic. si je recompile un nouveau noyau et que je configure grub par la même occasion pour pouvoir booter sur mon nouveau kernel, vu que je n’ai pas d’écran… on fait comment ?

        Merci d’avance

        • Math dit :

          T’inquiète… j’ai trouvé les sources qui vont bien…
          Je vais tenter ce noay 2.6.32.7 et si ça va pas, je ferai du cross compilation ou directement sur le guruplug…
          Merci pour ton aide, je ne manquerai pas de repasser par ton site pour te dire si ça a marché ;)

  • geekeriemascagne@free.fr dit :

    @Maisondouf, merci a toi, et merci pr ton wiki de ouffffff!

    @math: la mise a jour de ton noyau est assez simple :

    > wget http://sheeva.with-linux.com/sheeva/README-2.6.33
    > chmod +x README-2.6.33
    > ./README-2.6.33 --nandkernel

    De plus si tu as un problème, tu as tjs la vt100 pour te connecter au plug(cordon usb/mini-usb). Regarde bien les tutos de Maisondouf

  • Slt Math,

    effectivement tu as besoin de la jtag board, car le port mini-usb est “For Jtag board connection only”…. Quel bordel !!!!

    En attendant de commander cet engin, essai de compiler tes header avec le 2.6.32.7.

    bon courage

  • Benoit RIPERT dit :

    Boujour,
    suite à notre échange :

    Lorsque j’envoi une ligne de configuration du type “/usr/bin/xpl-cm15a –cm15a-ignore-rf –cm15a-verbose –cm15a-device /dev/cm15a0″ (les chemins sont bons), soit rien ne se passe, soit ça mouline près de 10 minutes avant de me redonner la main. Est-ce normal ?
    Ensuite lorsque j’envoi un ordre à un module, du type “/usr/bin/xpl-sender -m xpl-cmnd -c x10.basic device=a1 command=on”, rien ne se passe.
    Dernière chose, quand je redémarre mon ordinateur, le port n’est plus présent.

    Réponse :

    au démarrage de ta machine il faut que tu fasse un: insmod cma15.ko
    c ‘est normal que rien ne se passe, cette commande sert juste à ne pas polluer mon hub-xpl en ignorant les ordres x10-RF. il faut la lancer en fond de tache (&)
    as tu monter un hub-xpl pr voir ta commande est bien prise en compte?

    Suite :

    Non je n’ai pas branché de hub-xpl, si vous avez des infos à partager là dessus, je suis preneur ;)

    Merci encore.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Copyright © 2010-2025 Geekerie et Mascagne All rights reserved.
Desk Mess Mirrored v1.7 theme from BuyNowShop.com.