Codigo fuente del driver

17 04 2009

Está disponible el código fuente del driver, se puede descargar desde Sourceforge.

Anuncios




Programa con interfaz gráfica de usuario

17 04 2009

Ya está disponible el programa para la interfaz gráfica de usuario de la PIC CUM USB. Puede descargarse desde aquí.





Programas de usuario para consola

1 04 2009

Ya están en Sourceforge los programas de consola, se pueden descargar de aquí.





Notificador disponible para descargar

28 03 2009

Ya está subido a Sourceforge el paquete para las notificaciones de conexión y desconexión de la tarjeta. Se puede descargar de aquí.





Construyendo el paquete para las notificaciones

25 03 2009

El paquete de las notificaciones es muy parecido al del driver, cuya creación ya puse en su día.

Lo primero es crearnos un directorio de trabajo donde crearemos la estructura inicial del paquete:
mkdir /tmp/piccumusb-notifier
cd /tmp/piccumusb-notifier

Seguidamente nos bajaremos del Subversion el fuente de las notificaciones:
svn co https://piccumusb.svn.sourceforge.net/svnroot/piccumusb/notificaciones/trunk .

Crearemos nuestra estructura inicial, teniendo en cuenta que las reglas Udev irán al directorio /etc/udev/rules.d y los scripts de notificación a /usr/bin:
mdkir DEBIAN
mkdir -p usr/bin
mkdir -p etc/udev/rules.d

Ahora movemos los ficheros a su ubicación correspondiente:
mv piccumusb_notify.* usr/bin/
mv 80-piccumusb.rules etc/udev/rules.d/

Borraremos los scripts INSTALAR.sh y DESINSTALAR.sh ya que para eso estamos haciendo el paquete.
rm INSTALAR.sh DESINSTALAR.sh

Por último crearemos los dicheros control y copyright que contendrán:
FICHERO CONTROL:
Section: devel
Priority: optional
Maintainer: Joaquin Manuel Llano Montero
Build-Depends: debhelper (>= 7)
Standards-Version: 3.7.3
Homepage: http://piccumusb.sourceforge.net
Package: piccumusb-notifier
Version: 1.0
Architecture: i386
Depends: python (>=2.5 ), python-gnome2 (>=2.22.0), python-gtk2 (>= 2.10.3)
Suggest:piccumusb-driver (>= 1.0), piccumusb-gui (>=1.0), piccumusb-console (>=1.0)
Description: Scripts para las notificaciones de conexión y desconexión de la PICCUMUSB y regla de udev para llamarlos.

FICHERO COPYRIGHT
This package was debianized and created by Joaquin Manuel Llano Montero on
Mon, 23 Mar 2009 20:55:04 +0100.
It was downloaded from <http://piccumusb.sourceforge.net&gt;
Upstream Author(s):
Joaquin Manuel Llano Montero
License:
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
The Debian packaging is (C) 2009, Joaquin Manuel Llano Montero and
is licensed under the GPL, see above.

También es necesario que cambiemos los permisos al fichero de las reglas udev y a los scripts:
chmod 644 etc/udev/rules.d/80-piccumusb.rules
chmod 755 usr/bin/piccumusb-notify.sh usr/bin/piccumusb-notify.py

Por último crearemos nuestro paquete:
cd ..
fakeroot dpkg-deb --build piccumusb-notifier-0.0.1

Lo que nos creará un paquete de nombre piccumusb-notifier-0.0.1.deb





PIC CUM USB Module

17 03 2009

Ya se puede descargar el paquete deb del driver: piccumusb-module-2.6.26-1-686.
Sólo funciona en los Kernel 2.6.26-1-686, como su nombre indica, en breve colgaré el paquete deb con el código fuente para uqe sea más cómodo bajarlo y compilarlo, de momento las fuentes están en el Subversion de Sourceforge, las instrucciones para bajar el código están aquí
El paquete nuevo se puede bajar desde la sección de descargas de SourceForge o bien desde aquí





Creando el paquete deb del driver

17 03 2009

En este post voy a mostrar cómo crear el paquete Debian del driver de la tarjeta, sin el código fuente (ese lo crearemos en otro post distinto).
En este paquete vamos a colocar el fichero del módulo (piccumusb.ko) que se ubicará en /lib/modules/2.6.26-1-686/kernel/drivers/misc. También meteremos el fichero con las reglas para udev (explicaremos el funcionamiento de udev en otro post), el cual se usa para que cuando conectemos la tarjeta, teniendo el módulo del Kernel cargado, le asigne los permisos adecuados al fichero de dispositivo de la tarjeta (0666 en este caso).

Lo primero que necesitaremos es la ayuda de varias herramientas, si bien en este post no las usaremos todas.
sudo aptitude install maint-guide-es dh-make devscripts dpkg-dev autoconf automake dh-make debhelper devscripts fakeroot pbuilder

También necesitaremos descargarnos el fuente del driver, lo podemos descargar mediante Subversion, como explicamos en este post:
mkdir /tmp/piccumusb
$svn co https://piccumusb.svn.sourceforge.net/svnroot/piccumusb/driver/trunk /tmp/piccumusb

Puesto que necesitamos el modulo compilado, tendremos que tener a mano las cabeceras de nuestro núcleo
$sudo aptitude install linux-headers-`uname -r`

$cd /tmp/piccumusb
$ make clean
$rm -rf *.o *~ core .depend .*.cmd *.mod.c .tmp_versions *.bak *.symvers
$ make
make -C /lib/modules/2.6.26-1-686/build M=/tmp/piccumusb
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.26-1-686'
LD /tmp/piccumusb/built-in.o
CC [M] /tmp/piccumusb/piccumusb.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/piccumusb/piccumusb.mod.o
LD [M] /tmp/piccumusb/piccumusb.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.26-1-686'

Una vez compilado nuestro módulo sin errores, pasaremos a crear la estructura de nuestro paquete, para ello en primer lugar crearemos un directorio de trabajo donde colocaremos la estructura de nuestro paquete.
$mkdir /tmp/piccumusb-module-`uname -r`
$cd /tmp/piccumusb-module-2.6.26-1-686

Como dijimos antes nuestro módulo se instalará en /lib/modules/versión_de_nuestro_kernel/kernel/drivers/misc, mientras que la regla para udev se instalará en /etc/udev/rules.d, por ello necesitamos recrear la estructura de destino de nuestros ficheros para que al instalar el paquete estos se instalen en su lugar correcto.
mkdir -p /tmp/piccumusb-module-`uname -r`/lib/modules/`uname -r`/kernel/drivers/misc
mkdir -p /tmp/piccumusb-module-`uname -r`/etc/udev/rules.d

En el directorio /tmp/piccumusb-module-2.6.26-1-686/lib/modules/2.6.26-1-686/kernel/drivers/misc (la versión del Kernel puede variar) colocaremos el fichero de nuestro driver (piccumusb.ko)
cp /tmp/piccumusb/piccumusb.ko /tmp/piccumusb-module-2.6.26-1-686/lib/modules/2.6.26-1-686/kernel/drivers/misc

En el directorio /tmp/piccumusb-module-2.6.26-1-686/etc/udev/rules.d deberá ir el fichero 40-piccumusb.rules
cp /tmp/piccumusb/40-piccumusb.rules /tmp/piccumusb-module-2.6.26-1-686/etc/udev/rules.d

Una vez recreada la estructura de los directorios de destino, crearemos el directorio DEBIAN, en el cual colocaremos el fichero control y los scripts de pre/post-instalación/desinstalación.
mkdir /tmp/piccumusb-module-2.6.26-1-686/DEBIAN

En el fichero control se definen las dependencias del paquete, su autor, sección que ocupará el paquete en la jerarquía de Debian, etc. En nuestro caso, editaremos el fichero con nuestro editor favorito
emacs /tmp/piccumusb-module-2.6.26-1-686/DEBIAN/control
y colocaremos en él algo tal que así:

Package: piccumusb-module
Priority: optional
Section: devel
Installed-Size: 52
Maintainer: Joaquin Manuel Llano Montero
Architecture: i386
Version: 1.0
Depends:
Suggest: piccumusb-notifier (>= 1.0), piccumusb-gui (>=1.0), piccumusb-console (>=1.0)
Description: Modulo para el nucleo 2.6.26 de la piccumusb.

En cuanto a los scripts de pre/post-instalación/desinstalación, nosotros sólo necesitaremos dos de ellos, el de post-instalación (postinst), que se encargará de cargar nuestro módulo y de satisfacer las dependencias entre los módulos instalados y el nuestro mediante depmod. El otro script que necesitaremos se ejecutará antes de la desinstalación (prerm) y se encargará de descargar nuestro módulo del núcleo antes de borrarlo.
Estos scripts son como cualquier otro script de shell, vamos con el primero de ellos
emacs /tmp/piccumusb-module-2.6.26-1-686/DEBIAN/postinst
Este fichero debe quedar así:
#!/bin/bash
insmod /lib/modules/2.6.26-1-686/kernel/drivers/misc/piccumusb.ko
depmod -a

Hay que tener precaución de cambiar la versión del núcleo por la del que estemos creando el driver. No vale con usar uname -r como hemos hecho hasta ahora ya que alguien puede querer instalar el módulo para un kenel distinto del que está ejecutando.

Vamos ahora con el otro script, prerm:
emacs /tmp/piccumusb-module-2.6.26-1-686/DEBIAN/prerm
Éste deberá quedarnos tal que así:
#!/bin/bash
rmmod piccumusb

Una vez creados los scripts hay que cambiarles los permisos, si no las herramientas de creación de paquetes se quejarán de ello:
chmod 0555 posinst prerm

También tendremos que cambiar los permisos a los directorios:
$ find ./debian -type d | xargs chmod 755

Por último construiremos el paquete:
$cd /tmp
$fakeroot dpkg-deb --build piccumusb-module-2.6.26-1-686

En /tmp/piccumusb-module-2.6.26-1-686.deb tendremos nuestro paquete recién creado.

Para instalarlo basta con hacer
$sudo dpkg -i piccumusb-module-2.6.26-1-686.deb

Mientras que para borrarlo tendremos que hacer:
$sudo dpkg -r piccumusb-module

Una vez instalado, podremos ver si está instalado correctamente y el módulo se ha cargado mediante:
$ lsmod |grep piccumusb
Que nos dará una salida tal que así:
piccumusb 5856 0
usbcore 118160 6 piccumusb,uvcvideo,usbhid,ehci_hcd,uhci_hcd

También podemos ver los mensajes del núcleo y ver que nuestro driver está cargado:
$dmesg
[25360.473200] usbcore: registered new interface driver piccumusb

Por supuesto, podremos ver que el fichero del driver se encuentra en /lib/modules/2.6.26-686/kernel/drivers/misc y que las reglas para udev están en /etc/udev/rules.d

Si necesitáis más información sobre el sistema de paquetes de Debian y cómo crear vuestros propios paquetes
http://www.esdebian.org/articulos/23561/creando-paquetes-debian
http://www.debian.org/doc/manuals/reference/ch-package.es.html
http://informatica.escuelaedib.com/index.php?option=com_myblog&show=CA-mo-crear-tus-propios-paquetes-Debian.html&Itemid=59
http://www.esdebian.org/foro/24991/guia-crear-paquetes-deb
https://www.musix.org.ar/wiki/index.php/Como_hacer_un_paquete_deb
http://www.uv.es/uvdebian/pkg/
http://brutalchrist.wordpress.com/2009/02/05/debianizando/
http://www.debian.org/doc/manuals/maint-guide/ch-start.es.html
PD: sé que el paquete todavía no cumple con las directrices de Debian (si queréis comprobarlo basta con ejecutar lintian piccumusb-module-2.6.26-686.deb), pero es una prueba, lo iré puliendo y rellenaré este post con los cambios.