lunes, 23 de septiembre de 2013

Enviar correo desde la Raspberry pi


Para enviar correos desde la Raspberry pi y desde cualquier red útil para tenemos una raspberry pi en movimiento. Los correos los podemos enviar a nuestra cuenta existente de Gmail. Necesitamos un (MTA) mail transport agent (agente de transferencia de correo). Como aplicación se puede usar Exim4 o ssmtp

        ssmtp:


sudo apt-get install ssmtp mailutils mpack
Editamos como root este fichero: /etc/ssmtp/ssmtp.conf 
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
#hostname=raspberrypi

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES
#
AuthUser=cuenta@gmail.com
AuthPass=contraseña
UseSTARTTLS=YES
Guaramos el fichero y automáticamente recibiremos los correos en nuestra cuenta gmail.
Exim4:
sudo apt-get install exim4
Una vez instalado lanzamos el configurador:
sudo dpkg-reconfigure exim4-config
1) escoger opción 2 (mail sent by smarthost: received via smtp or fetchmail
2) nombre del sistema, ejemplo: Raspberrypi
3) dejar como esta
4)Other destinations for which mail is accepted: raspberrypi
5)Machines to relay mail for: (dejar en blanco)
6) smtp.gmail.com::587
7) Hide local mail name in outgoing mail: --> No
8) Keep number of DNS-queries minimal:--> No
9) Delivery method for local mail: "Maildir format in home directory"
10) Split configuration into small files: -->No
Como root editamos este fichero: /etc/exim4/passwd.client 
gmail-smtp.l.google.com:CUENTA@gmail.com:CONTRASEÑA
*.google.com:YOU@gmail.com:CONTRASEÑA
smtp.gmail.com:YOU@gmail.com:CONTRASEÑA
sudo update-exim4.conf
sudo /etc/init.d/exim4 restart

viernes, 6 de septiembre de 2013

Montar una partición con una imágen de "wheezy" en Ubuntu

Montar una partición con una imágen de "wheezy" en Ubuntu


Es interesante montar una imágen cuando estamos programando en un PC donde tenemos un linux por ejemplo un Ubuntu.


Antes de montar una imágen hay que saber cuanto espacio ocupa en bytes.




root@icarus:/opt# ls
2012-07-15-wheezy-raspbian.img  2012-07-15-wheezy-raspbian.zip  google  teamviewer8
root@icarus:/opt# parted 2012-07-15-wheezy-raspbian.img
GNU Parted 2.3
Using /opt/2012-07-15-wheezy-raspbian.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b
(parted) print list                                                      
Model:  (file)
Disk /opt/2012-07-15-wheezy-raspbian.img: 1939865600B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start      End          Size         Type     File system  Flags
 1      4194304B   62914559B    58720256B    primary  fat16        lba
 2      62914560B  1939865599B  1876951040B  primary  ext4


Model: ATA WDC WD10JPVT-00A (scsi)
Disk /dev/sda: 1000204886016B
Sector size (logical/physical): 512B/4096B
Partition Table: msdos

Number  Start          End             Size           Type      File system     Flags
 1      1048576B       2047868927B     2046820352B    primary   linux-swap(v1)  boot
 2      2048916480B    1000204140543B  998155224064B  extended
 5      2048917504B    202048012287B   199999094784B  logical   ext4
 6      202049060864B  1000204140543B  798155079680B  logical   ext4

(parted) quit                                                            
root@icarus:/opt#

Esta es la informacón que nos interesa, 62914560 bytes y la partición es ext4.


root@icarus:/opt# mkdir /mnt/rasp-pi-rootfs
root@icarus:/opt# mount -o loop,offset=62914560 2012-07-15-wheezy-raspbian.img /mnt/rasp-pi-rootfs
root@icarus:/opt#




jueves, 5 de septiembre de 2013

Configurar un pantalla táctil eGalax para Raspberry pi

Añadir una pantalla táctil para el proyecto RASPYDOMO.

 
Material utilizado:

10.4 inch 4-wire touch panel+USB port touch panel driver board Kit
Marca: eGalax



Hay dos formas de hacerlo, empezaremos con la más rápida y sencilla.
(Este método consiste en un kernel ya compilado y listo para usar)


Antes de empezar comprobamos que el sistema ha reconocido físicamente la tarjeta usb que controla la pantalla táctil:

root@raspberrypi:~# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
root@raspberrypi:~#

La forma sencilla consiste en no tener que recompilar un nuevo kernel, aquí podéis descarga uno ya hecho.
Fcihero: Kernel_3_6_11_eGalax_feb_2013.tar.gz


Descomprimimos el contenido del fichero:
root@raspberrypi:~# tar -xvf kernel_3_6_11_eGalax_feb_2013

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013# ls
kernel.img  modules
root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013#

Remplazamos los fichero que ya tenemos en nuestra distribución:

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013# cp kernel.img /boot/

Y lo mismo para el contenido de estas carpetas:

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib# ls
firmware  modules

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/firmware# ls
edgeport  emi62   keyspan_pda  mts_edge.fw  ti_3410.fw  whiteheat.fw         yam
emi26     kaweth  mts_cdma.fw  mts_gsm.fw   ti_5052.fw  whiteheat_loader.fw
root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/firmware# cp * -R /lib/firmware/


Y

root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/modules/3.6.11+# ls
build              modules.builtin      modules.dep.bin      modules.isapnpmap  modules.seriomap     modules.usbmap
kernel             modules.builtin.bin  modules.devname      modules.ofmap      modules.softdep      source
modules.alias      modules.ccwmap       modules.ieee1394map  modules.order      modules.symbols
modules.alias.bin  modules.dep          modules.inputmap     modules.pcimap     modules.symbols.bin
root@raspberrypi:~/kernel_3_6_11_eGalax_feb_2013/modules/lib/modules/3.6.11+# cp * -R /lib/modules/3.6.11+/

Una vez hecho estos pasos reiniciamos el S.O para que haga el boot con el nuevo kernel.


root@raspberrypi:~# uname -a
Linux raspberrypi 3.6.11+ #1 PREEMPT Fri Feb 8 19:44:47 EET 2013 armv6l GNU/Linux

Llegado a este paso la luz verde  de la tarjeta que controla la pantalla táctil sólo se iluminará cuando recibe una señal. Es es bueno porque antes siempre estaba fija ahora con lo controladores que hemos puesto está funcionando.

También podemos ver que está correctamente reconocido:

root@raspberrypi:/proc# cat /proc/bus/input/devices
I: Bus=0003 Vendor=0eef Product=0001 Version=0100
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-bcm2708_usb-1.2/input0
S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input1
U: Uniq=
H: Handlers=mouse0 event1 
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=3



El próximo paso es realizar la calibración y posteriormente hacer que estos cambios sean guardados de forma permanente. Desde una ventana Xserver termnial lanzamos:









root@raspberrypi:~# xinput_calibrator
Calibrating EVDEV driver for "eGalax Inc. USB TouchController" id=6
        current calibration values (from XInput): min_x=123, max_x=1987 and min_y=1881, max_y=161

Doing dynamic recalibration:
        Setting new calibration data: 120, 1996, 1876, 145


--> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "eGalax Inc. USB TouchController"
        Option  "Calibration"   "120 1996 1876 145"
EndSection

Tal y como indica lo copiamos en este fichero: /etc/X11/xorg.conf.d. El fichero xorg.conf o xorg.conf.d son auto detectables y son usados para variables de entorno. En esta distribución usaremos este fichero: xorg.conf si no existe lo creamos.

Este manual ha sido creado/probado con esta versión:

Raspbian

logo
Image
2013-07-26-wheezy-raspbian.zip
Release Date:2013-08-17
Version: wheezy
Kernel: 3.6


















miércoles, 4 de septiembre de 2013

Compilar qt creator 5 para la Raspberrypi:

El proyecto de Raspydomo consiste tener una aplicación gráfica mediante una pantalla táctil esto nos permitirá hacer el desarollo.

Para compilar qt creator versión 5 en la Raspberry pi hay que seguir estos pasos:

1.  sudo apt-get update
2.  sudo apt-get upgrade
3. sudo apt-get install libfontconfig1-dev libdbus-1-dev libfreetype6-dev libudev-dev libicu-dev libsqlite3-dev libxslt1-dev libssl-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools gstreamer0.10-plugins-good gstreamer0.10-plugins-bad libraspberrypi-dev libpulse-dev libx11-dev libglib2.0-dev libcups2-dev freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev libmysqlclient-dev firebird-dev libpng12-dev libjpeg62-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 1.  libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev


Crear el directorio de compilación:
1.  mkdir ~/opt
2.  cd ~/opt

Descargar qt5 source code desde git:
1.  git clone git://gitorious.org/qt/qt5.git

Descargar git sources para otros componentes
1.  cd qt5
2.  ./init-repository

No aplicar ningún partche. El "git source" tendría que se compilado con estos parámetros" Hay que asegurarse que estamos en la carpeta de compilación:
1.  cd ~/opt/qt5

Para configurar Qt5 hay que apuntar la variable  CROSS_COMPILE a /usr/bin/g++ (without the g++) de lo contrario se quejará. Todo el output será guarado en este fichero: output (se puede consultar por si algo es incorrecto). Al final estará comentado que se puede ejecutar el make de lo contrario habrá que revisar los errores.

Ejecutar configure:
1.  ./configure --opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/usr/bin/ -opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -qt-pcre -make libs -prefix /usr/local/qt5 &> output


Verificamos de nuevo el fichero output para ver que ha realizar el componente y ahora se puede lanzar el make.
Se puede modifica el script r: ~/opt/qt5/qtbase/configure Si no hay todas la dependencias instaladas se puede cambiar a: (buscar QT_CFLAGS_DBUS)


1.  # flags for raspberry pi build
2.  # flags for libdbus-1
3.  QT_CFLAGS_DBUS="-I/usr/include/dbus-1.0/ -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include/"
4.  QT_LIBS_DBUS=-ldbus-1
5.   
6.  # flags for Glib (X11 only)
7.  QT_CFLAGS_GLIB="-I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/"
8.  QT_LIBS_GLIB=-lglib-2.0
9.   
10. QT_CFLAGS_PULSEAUDIO="-I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/"
11. QT_LIBS_PULSEAUDIO="-lpulse -lpulse-mainloop-glib"
12.  
13. # flags for GStreamer (X11 only)
14. QT_CFLAGS_GSTREAMER="-I/usr/include/gstreamer-0.10/ -I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/ -I/usr/include/libxml2/"
15. QT_LIBS_GSTREAMER=

Bucar QT_CFLAGS_FONTCONFIG en la configuración del script. Aparecen según este ejemplo, hay que cambiar por:
1.  QT_CFLAGS_FONTCONFIG=-I/usr/include/freetype2/

Depués hay que ejecutar make de esta forma:  (consultar errores en este fichero: output_make):
1.  make &> output_make

Si todo sale bien se puede ejecutarmake install (consultar errores en este fichero: output_make_install):
1.  sudo make install &> output_make_install

Después hay que añadir estas líneas en el fichero: .bashrc file:
1.  export LD_LIBRARY_PATH=/usr/local/qt5/lib/
2.  export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/qt5/bin

Hay que enlazar con el fichero: .bashrc para configurar las variables de entorno:
1.  source ~/.bashrc

Después ejecutar esto y verificar que apunte a: /usr/local/qt5/bin/qmake
1.  which qmake

Finalmente ya se puede compilar el ejemplo y ejecutarlo (probar el ejemplo OpenGl Cube)
1.  cp -r ~/opt/qt5/qtbase/examples/opengl/cube ~/
2.  cd ~/cube
3.  qmake
4.  make
5.  ./cube



Compilado con esta versión y sin ningún tipo de problemas:

Raspbian

logo
Image
2013-07-26-wheezy-raspbian.zip
Release Date:2013-08-17
Version: wheezy
Kernel: 3.6