Archives par étiquette : linux

Arduino remote upload

This is how I upload sketches from my computer (windows 7) to an arduino uno board attached to a remote linux host (Debian 7).

On the linux host:

  • Install usbip package
  • Load kernel modules usbip_host and usbip_core
  • As root, launch usbipd (use -d for debugging)
  • Find your arduino board with lsusb :

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 046d:c313 Logitech, Inc. Internet 350 Keyboard
Bus 007 Device 004: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

  • Export the usb bus (arduino device is 7-4, so the bus is 7-1)

usbip bind -b 7-1

On Windows:

usbip -a archipel 7-1

  • Let windows install the drivers
  • Use Device Manager to find the COM port corresponding to « Arduino UNO »
  • Select the correct COM port in Arduino IDE
  • Enjoy !

Bluetooth mouse with Doudoulinux

I installed Doudoulinux on my MSI Wind U100’s hard drive for my daughter,

First, I followed this excellent tutorial which tells how to install a basic Debian Squeeze on my hard drive, and install doudoulinux on top of it.

To enable the bluetooth mouse, I followed these steps:

  • Enable bluetooth 😉
  • Install blueman
  • Open a desktop session (« Tout Doudoulinux » in french)
  • Go to settings and open Bluetooth Manager
  • Connect your bluetooth mouse

Et voilà, it’s now enabled at boot for all sessions.

Liens

Logiciel libre

www.shellunix.com : Un site simple, clair et complet sur bash, sed et awk. Une référence pour moi.

Photorec : Un utilitaire de récupération de photos et de documents qui, contrairement à de nombreux rivaux, a le mérite de fonctionner et la bonne idée d’être sous licence GPL

Boosting Spamassassin : Comment optimiser le spamassassin de zimbra en utilisant les « rules du jour »

Perl script to adjust ‘srt’ subtitle files : Un script pour ajuster le décalage dans des fichiers de sous-titres

Divers

www.sebastienchampion.fr : De belles photos de paysages et d’animaux

Compiling rpcapd for linux

Several years ago, I compiled rpcapd for linux. To achieve it, I had to comment the win32 specific code, so it compiled on linux.

I recently tried to compile the latest version, and it doesn’t need modifications anymore to successfully compile.

Here is a quick howto, based on debian 5:

Install the required tools

 apt-get install bison flex

Download and unzip winpcap

 wget http://www.winpcap.org/install/bin/WpcapSrc_4_1_2.zip
 unzip WpcapSrc_4_1_2.zip
 cd winpcap/wpcap/libpcap
 chmod +x configure runlex.sh

Configure libpcap to compile statically…

 CFLAGS=-static ./configure

…and compile

 make
 cd rpcapd/

edit the Makefile and add -static to CFLAGS, and finally

 make

Downloads:

amd64: rpcapd-4.1.2-amd64.gz
i386: rpcapd-4.1.2-i386.gz

Vmware Server, NAT et PPTP

L’objectif

Un ami m’a soumis la problématique suivante: Il souhaite louer un serveur hébergé chez OVH (donc avec une seule interface réseau) avec vmware server pour héberger plusieurs machines virtuelles, dont une devant faire office de serveur pptp. Il comptait s’appuyer sur le « NAT Networking » de vmware server pour gérer la translation d’adresses, ce qui ne pose pas de problèmes pour le port TCP/1723 (PPTP) mais ne fonctionne pas avec le protocole 47 (GRE).
La solution est simple: Linux sachant parfaitement remplir ce rôle, il suffit de lui confier et de reléguer le « vm network » sur une interface virtuelle.

Voici donc un guide pas à pas concernant vmware server 2.0 sur une Debian 5.0.2.
Les paramètres sont les suivants:

  • IP « publique » de l’hôte: 192.168.3.1 (oui je sais, c’est une maquette)
  • Réseau privé: 172.16.0.0/24
  • IP privée de l’hôte: 172.16.0.1
  • IP serveur virtuel PPTP: 172.16.0.2

Ajout de l’interface virtuelle tap1

Installer le paquet contenant le binaire tunctl

apt-get install uml-utilities

Ajouter dans /etc/network/interfaces:

auto tap1
iface tap1 inet static
       pre-up tunctl -u root -t tap1
       pre-up ifconfig tap1 up
       post-down tunctl -d tap1
       address 172.16.0.1
       netmask 255.255.255.0

puis activer tap1

ifup tap1

vérifier le tout

#ifconfig tap1
tap1      Link encap:Ethernet  HWaddr 00:ff:c0:7f:c8:83
          inet adr:172.16.0.1  Bcast:172.16.0.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3805 overruns:0 carrier:0
          collisions:0 lg file transmission:500
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Configuration vmware

Nous avons donc une nouvelle interface réseau, nous allons maintenant dire à vmware server de se « bridger » sur cette interface, et non pas une autre.
Pour cela, lancer la commande

vmware-config.pl

et modifier la partie concernant les bridges, soit en ajoutant un nouveau brigde, soit en modifiant le bridge actuel pour qu’il utilise tap1. Dans notre cas, la deuxième solution semble la plus appropriée, les vm n’ayant plus à être connectées directements via l’interface « publique ».
Les machines virtuelles peut maintenant être connectées à ce bridge, et se voir affecter une adresse IP en 172.16.0.x avec comme passerelle 172.16.0.1

Configuration iptables

Désormais, il n’y a plus qu’à paramétrer netfilter afin qu’il route correctement les paquets pptp.
Tout d’abord on active le routage:

echo 1 > /proc/sys/net/ipv4/ip_forward

Puis on natte le réseau privé:

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j  MASQUERADE

En renvoyant le port pptp et le protocole GRE vers notre VM:

iptables -t nat -A PREROUTING -d 192.168.3.9 -p 47 -j DNAT --to-destination 172.16.0.2
iptables -t nat -A PREROUTING -d 192.168.3.9 -p tcp --dport 1723 -j DNAT --to-destination 172.16.0.2

Si ça ne fonctionne pas, penser à charger le module « Netfilter NAT helper module for PPTP »:

modprobe nf_nat_pptp

Conclusion

Cette astuce peut-être appliquée dans d’autres cas, par exemple pour simplement profiter de réseaux virtuels supplémentaires avec vmware server (ou encore kvm), ces réseaux contenant l’hôte et les invités.

Wireshark remote sniffing without rpcapd

Wireshark for windows

After reading my article about rpcapd, Peter Calum sent me this message:

I can not use rcapd because of the problem with the random chosen port for the data transfer, because of the FW between our office network and our technical network servers. Our wireshark collecting host is placed here.

But after some work I found another solution which works real fine : Pipe a tcpdump command on the collecting host back trough SSH.
I use plink.exe which comes with PuTTY

Make a command file with the tcpdump command :

tcpdump -s0 -w - -i eth0 not port 22

Run

plink.exe -ssh -pw mypassword root@192.168.1.10 -m commands.txt | "c:program fileswiresharkwireshark.exe" -k -i –

when you send the command wireshark starts up and shows the data … voila

Wireshark for linux

And from linux, just run :

ssh root@192.168.5.228 "tcpdump -w - host 192.168.5.219" | wireshark -k -i -

Souris bluetooth et Debian

Voici comment faire en sorte qu’une souris bluetooth (en l’occurence une Logitech Laser Travel Mouse) soit reconnectée automatiquement au démarrage par ma Debian 5.

Ceci n’est qu’une adaptation des informations trouvées sur cette page

  • Ouvrir un terminal en tant que root
  • Installer le package bluez-utils
#apt-get install bluez-utils
  • Allumer la souris
  • Appuyer quelques secondes sur le bouton « Connect » de la souris, jusqu’à ce que le voyant clignote
  • Lancer la recherche de souris:
#hidd --search
Searching ...
  	Connecting to device 00:07:61:EA:91:63
  • La souris doit maintenant fonctionner
  • Editer le fichier /etc/default/bluetooth afin qu’il contienne les lignes suivantes (remplacer évidemment l’adresse mac par celle obtenue lors de la recherche) :
############ HIDD
#
# HID daemon
HIDD_ENABLED=1
HIDD_OPTIONS="--connect 00:07:61:EA:91:63 --master --server"
  • La souris doit maintenant être connectée dès qu’elle est allumée

Astuces Exim

Simuler le routage d’un mail :

exim -bt cyril@domain.com


Voir la file d’attente

exim -bp


Supprimer un mail donné:

exim -Mrm id_mail


Débloquer un mail donné:

exim -M id_mail


Utiliser un smarthost:

Certaines listes de spam (notamment spamhaus) considèrent les IP résidentielles comme source de spam, et blacklistent donc ces adresses IP : « This IP range has been identified by Spamhaus as not meeting our policy for IPs which should deliver ‘direct-to-mx’ mail to PBL users. »

La solution la plus simple consiste à renvoyer les mails à destination des domaines concernés vers le smtp du FAI, ce dernier n’étant pas (toujours) blacklisté

Ajouter dans exim4.conf, au début de la section « begin routers »

send_to_smarthost:
       driver = manualroute
       domains = gmail.com : netcourrier.com
       transport = remote_smtp
       route_list = * smtp.free.fr

Grub error 15 when adding new hard disk

I have a Asus M2N-MX motherboard, with an single SATA disk, and grub correctly configured:

/boot/grub/device.map
(hd0) /dev/sda

When I tried adding an IDE disk, grub refused to boot with « error 15 », which means « file not found ».

Obviously, grub was detecting disks in a wrong order, and was trying to load stage 1.5 from the IDE disk. To be clear, since the boot disk defined in the BIOS was the SATA, it had to be presented to grub as the first disk. So it’s a buggy BIOS.

This seems to be a common behavior when mixing IDE and SATA disks.
I googled about this error, but founded nothing really helpful. Changing boot order or activating onboard RAID didn’t solve this error.

Then I upgraded from bios 0701 to 0903, and the problem was gone.

TIP: To upgrade Asus motherboard bios on a linux-only computer, you don’t need to create a DOS bootable floppy. Recent Asus motherboard include a feature called « EZ-Flash », which is an BIOS upgrade utility included … in the BIOS.

  • Download BIOS update from Asus Website
  • Unzip it and extract the .ROM file (for me M2NX0907.ROM)
  • Rename this file with the motherboard model name (for me M2N-MX.ROM)
  • Install mtools on your distro
  • Insert a blank floppy
  • Format the floppy mformat a:
  • Copy the rom on the floppy mcopy M2N-MX.ROM a:
  • Reboot
  • During POST, press Alt-F2 to launch EZ-Update
  • The BIOS upgrade procedure will start