Erwan.me

Aller au contenu | Aller au menu | Aller à la recherche

mardi 18 octobre 2016

Modem 3G Huawei E3131 sur Raspbian

Après la clef 3G TP-Link MA260 et la Huawei E303, je vous propose une autre Huawei : E3131.

Après le branchement de la clef, on obtient un pseudo lecteur CD-ROM contenant le driver Windows Ⓒ :

lsusb
Bus 001 Device 024: ID 12d1:15ca Huawei Technologies Co.

On va la passer en mode Modem :

sudo usb_modeswitch -v 12d1 -p 15CA -M '55534243123456780000000000000011062000000100000000000000000000'

lsusb
[...]
Bus 001 Device 024: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard

ifconfig
[...]
wwan0     Link encap:Ethernet  HWaddr 00:X:X:X:X
          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:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Pour automatiser le changement de mode et le rendre persistant, on va utiliser comme à chaque fois usb_modeswitch :

sudo nano /etc/usb_modeswitch.d/12d1\:15ca

#Huawei E3131 (Variant)
TargetVendor= 0x12d1
TargetProductList="1506"
MessageContent="55534243123456780000000000000011062000000100000000000000000000"

Avec la règle udev qui va bien :

sudo nano /lib/udev/rules.d/40-usb_modeswitch.rules

[...]

LABEL="modeswitch_rules_begin"

[...]

# Huawei E3131 (Variant)
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="15ca", RUN+="usb_modeswitch '%b/%k'"

[...]

LABEL="modeswitch_rules_end"

Pour prendre en compte de cette nouvelle règle sans redémarrage :

sudo udevadm control --reload-rules

Vient ensuite la configuration du dialer. En ligne de commande j'utilise wvdial (disponible dans les dépôts) :

sudo nano /etc/wvdial.conf

[Dialer Defaults]
Modem           = /dev/ttyUSB0
Modem Type      = Analog Modem
Baud            = 460800
ISDN            = 0
Stupid Mode     = 1
New PPPD        = yes
Dial Command    = ATD
Phone           = *99#
Username        = { }
Password        = { }
Init1           = ATZ
Init2           = ATQ0 V1 E1 S0=0
Init3           = AT+CFUN=1,0
Init4           = AT+CGDCONT=1,"IP","apn.de.votre.fournisseur"

Pour tester :

sudo wvdial CYM
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0
ATQ0 V1 E1 S0=0
OK
--> Sending: AT+CFUN=1,0
AT+CFUN=1,0
OK
--> Sending: AT+CGDCONT=1,"IP","apn.de.votre.fournisseur"
AT+CGDCONT=1,"IP","apn.de.votre.fournisseur"
OK
--> Modem initialized.
--> Sending: ATD*99#
--> Waiting for carrier.
ATD*99#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Tue Oct 18 11:28:09 2016
--> Pid of pppd: 3959
--> Using interface ppp0
--> pppd: ���vx[1b]�[01]�[1c]�[01][05]
[...]
--> local  IP address 10.X.X.X
--> remote IP address 10.X.X.X
--> primary   DNS address 194.X.X.X
--> secondary DNS address 194.X.X.X
[...]

On termine par la configuration réseau persistante :

sudo nano /etc/network/interfaces

[...]
# Huawei E3131 (modem mode)
allow-hotplug wwan0
iface wwan0 inet wvdial

# Generic PPP 3G Modem
auto ppp0
iface ppp0 inet wvdial
[...]

And voilà :)

dimanche 15 mars 2015

Retropie : (re)connexion automatique de manettes PS3

On va utiliser une règle udev, comme pour les clefs 3G HUAWEI E303 et TP-LINK MA260.

sudo nano /etc/udev/rules.d/99-sixpair.rules
DRIVER=="usb", SUBSYSTEM=="usb", ATTR{idVendor}=="054c", ATTR{idProduct}=="0268", RUN+="/opt/retropie/supplementary/ps3controller/sixpair"

Recalbox utilise une solution identique :

Vous pouvez vous en inspirer si vous avez un adaptateur bluetooth récalcitrant. De mon coté, la deuxième manette ne se synchronise jamais. Je la branche et relance sixad (si vous avez une meilleure idée, n'hésitez pas) :

sudo nano /opt/retropie/supplementary/ps3controller/sixpair.udev
#!/bin/bash
/opt/retropie/supplementary/ps3controller/sixpair | logger -t "sixpair"
service sixad restart  | logger -t "sixad"
sudo chmod +x  /opt/retropie/supplementary/ps3controller/sixpair.udev
sudo udevadm control --reload-rules
sudo udevadm trigger

Modifiez /etc/udev/rules.d/99-sixpair.rules en conséquence !

Vous devrez aussi laisser votre adaptateur bluetooth en mode PISCAN :

sudo nano /etc/rc.local
[...]
hciconfig hci0 piscan
exit 0




Pour la configuration dans Retroarch :

sudo nano /opt/retropie/configs/all/retroarch.cfg
[...]
# PS3 Controllers :
# Player 1
input_player1_a_btn = "13"
input_player1_b_btn = "14"
input_player1_x_btn = "12"
input_player1_y_btn = "15"
input_player1_l_btn = "10"
input_player1_r_btn = "11"
input_player1_l2_btn = "8"
input_player1_r2_btn = "9"
input_player1_l3_btn = "1"
input_player1_r3_btn = "2"
input_player1_start_btn = "3"
input_player1_select_btn = "0"
input_player1_left_btn = "7"
input_player1_up_btn = "4"
input_player1_right_btn = "5"
input_player1_down_btn = "6"
input_player1_l_x_plus_axis = "+0"
input_player1_l_y_plus_axis = "+1"
input_player1_l_x_minus_axis = "-0"
input_player1_l_y_minus_axis = "-1"
input_player1_r_x_plus_axis = "+2"
input_player1_r_y_plus_axis = "+3"
input_player1_r_x_minus_axis = "-2"
input_player1_r_x_minus_axis = "-3"

# Player 2
input_player2_a_btn = "13"
input_player2_b_btn = "14"
input_player2_x_btn = "12"
input_player2_y_btn = "15"
input_player2_l_btn = "10"
input_player2_r_btn = "11"
input_player2_l2_btn = "8"
input_player2_r2_btn = "9"
input_player2_l3_btn = "1"
input_player2_r3_btn = "2"
input_player2_start_btn = "3"
input_player2_select_btn = "0"
input_player2_left_btn = "7"
input_player2_up_btn = "4"
input_player2_right_btn = "5"
input_player2_down_btn = "6"
input_player2_l_x_plus_axis = "+0"
input_player2_l_y_plus_axis = "+1"
input_player2_l_x_minus_axis = "-0"
input_player2_l_y_minus_axis = "-1"
input_player2_r_x_plus_axis = "+2"
input_player2_r_y_plus_axis = "+3"
input_player2_r_x_minus_axis = "-2"
input_player2_r_x_minus_axis = "-3"

# Exit emulators with "Home" button :
input_enable_hotkey_btn = "16"
input_exit_emulator_btn = "16"

Vous pouvez configurer autant de manettes que vous voulez de cette manière...

Sources :

samedi 14 mars 2015

Modem 3G HUAWEI E303 sur Raspbian

Normalement, ce modem est reconnu directement sous la forme d'un adaptateur USB réseau. Il devrait etre disponible sous l'interface "eth1".

Pour configurer l'interface réseau, rien de plus simple :

sudo nano /etc/network/interfaces
allow hotplug eth1
iface eth1 inet dhcp

Voici tous les modes disponibles trouvés :

  • 12d1:1f01 : Accès à la carte mémoire
  • 12d1:14dc : Adaptateur Ethernet
  • 12d1:1001 : Modem PPP USB classique

La configuration ressemble à celle évoquée précédemment : modem TP-LINK MA260

Voici une autre possibilité : le fichier de configuration d'usb-modeswitch. Il y a un exemple dans la documentation :

cd /usr/share/usb_modeswitch/
sudo tar xvzf configPack.tar.gz
sudo cp /usr/share/usb_modeswitch/12d1\:1f01 /etc/usb_modeswitch.d/

Remplacez le contenu du fichier de configuration en fonction de votre besoin.

Adaptateur Ethernet :

# Huawei E353 (3.se) Ethernet Adapter
TargetVendor=  0x12d1
TargetProduct= 0x14db
MessageContent="55534243123456780000000000000a11062000000000000100000000000000"
NoDriverLoading=1

Modem USB :

# Huawei E353 (3.se) PPP Modem
TargetVendor= 0x12d1
TargetProduct= 0x1001
MessageContent="55534243123456780000000000000011063000000100010000000000000000"
NoDriverLoading=0

Sources :

mardi 10 février 2015

Transformer une Debian en kiosque internet (Raspberry Pi et/ou MIPS Creator CI20)

Installation du nécessaire :

  • i3 : Gestionnaire de fenêtres
  • feh : Lecteur d'image (pour le fond d'écran)
  • surf : navigateur internet "simple" basé sur webkit
  • x11-xserver-utils : Outils pour le serveur X parfois bien pratique
  • ttf-mscorefonts-installer : les polices de caractères répandues sur internet (il faudra activer les dépôts "contrib")
  • xwit, unclutter : cacher le curseur (méthodes alternatives)

On commence par configurer le clavier, la langue et l'heure du système :

# Clavier classique PC en français :
setxkbmap fr
# De manière persistante :
sudo dpkg-reconfigure keyboard-configuration
# Choisir "PC générique 105 touches (intl)
# Français (variante)
# Disposition par défaut
# Pas de touche Compose
# Système en français :
sudo dpkg-reconfigure locales
# Fr_fr.UTF8
# Heure française :
sudo dpkg-reconfigure tzdata
# Europe / Paris

La version actuelle du navigateur Surf dans les dépôts est la version 0.4.1 et ne supporte pas le mode kiosque. Nous allons devoir compiler la version 0.6 :

sudo apt-get install build-essential git libgtk2.0-dev libwebkit-dev libglib2.0-dev zlib1g-dev
git clone http://git.suckless.org/surf
cd surf
git checkout 0.6
make
sudo make install

Configuration d'i3

i3-config-wizard
<Enter> Yes, generate ~/.i3/config
<Win> Win as default modifier
<Enter> to write ~/.i3/config

Personnellement, je rajoute toujours la possibilité d'éteindre et de redémarrer car le Pi n'a pas de bouton (par défaut) :

# reload the *C*onfiguration file
bindsym $mod+Shift+C reload
# restart i3 *I*nplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+I restart
# *E*xit i3 (logs you out of your X session)
bindsym $mod+Shift+E exit
# *P*oweroff - shut down system with systemd/polkit
bindsym $mod+Shift+P exec /usr/bin/systemctl poweroff
# *R*eboot
bindsym $mod+Shift+R exec /usr/bin/systemctl reboot

Pour cacher la barre d'i3 :

# Start and hide i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command  i3status
mode            hide
}

Finalement, on indique à i3 de n'afficher Surf qu'en plein écran :

# make surf start in fullscreen
for_window [class="Surf"] fullscreen
# execute surf
exec /usr/bin/surf -b -f -K "http://blog.erwan.me"

Configuration du serveur X :

nano .xinitrc
# Disable the screensaver :
xset s off
# disable DPMS (Energy Star) features :
xset -dpms
# Don't blank the video device :
xset s noblank
# Nice wallpaper (surf loading)  :
xsetroot -solid "#FFFFFF"
feh --bg-max /usr/share/raspberrypi-artwork/raspberry-pi-logo.png
# And finally start our window manager :
i3 & wmpid=$!
# Wait a second :
sleep 1
# kills all the other programs on exit of you window manager :
wait $wmpid

Pour cacher le pointeur de souris, vous avez plusieurs solutions :

sudo nano /etc/X11/xinit/xserverrc
#!/bin/sh
exec /usr/bin/X -nocursor -nolisten tcp "$@"

Ou bien rajoutez dans votre .xinitrc, avant le fond d'écran :

# Hide the cursor
unclutter -display :0 -noevents -grab &
# Hide the cursor (move it to the bottom-right)
xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )

Au démarrage, on lance X avec l'utilisateur de votre choix (ici erwan) :

sudo nano /etc/rc.local
#!/bin/sh -e
su -l erwan -c startx
exit 0

Maintenant que tout est prêt, il ne nous reste plus qu'à configurer le gestionnaire de connexion et lui dire d'utiliser i3 :

sudo nano /etc/lightdm/lightdm.conf
# user-session=default
user-session=i3
nano .dmrc
[Desktop]
Session=i3
sudo update-alternatives --config x-window-manager
# Choisir i3

Redémarrez et profitez !

Si tout ne se passe pas comme prévu (vous pensiez vous ennuyer ?) :

  • Vous pouvez vous connecter depuis un autre ordinateur via SSH, et lancer des commandes graphiques :
env DISPLAY=:0 surf -k 'http://blog.erwan.me'
  • N'oubliez pas les raccourcis clavier définis dans la configuration d'i3 :
Super (Windows) + MAJ + C pour recharger la configuration d'i3
Super (Windows) + MAJ + I pour relancer i3
Super (Windows) + MAJ + E pour quitter i3
Super (Windows) + MAJ + R pour redémarrer
Super (Windows) + Enter pour avoir un terminal

Sources :

mercredi 17 décembre 2014

Sauvegarder son Raspberry PI et visualiser la progression de la sauvegarde

Pour sauvegarder (carte SD en /dev/sdb) :

sudo dd bs=4M if=/dev/sdb | gzip > /home/erwan/raspberry/Raspbian-i3-`date +%Y-%m-%d`.gz

Pour visualiser la progression (dans un autre terminal - le résultat s'affiche dans le premier) :

watch -n 5 sudo pkill -USR1 -n -x dd

Pour restaurer (carte SD en /dev/sdb) :

sudo -s
gzip -dc /home/erwan/raspberry/Raspbian-i3-2014-12-17.img.gz | dd bs=4M of=/dev/sdb

vendredi 12 décembre 2014

Modem 3G TP-LINK MA260 sur Raspbian

On commence par installer tout le nécessaire :

sudo apt-get install usb-modeswitch eject ppp wvdial usbutils

Un peu d'explications :

  • usb-modeswitch : Passer du modem au lecteur de carte-SD
  • eject : Ejecter le faux lecteur CD-ROM associé à la fonction modem (utilisé pour installer les pilotes Windows)
  • ppp : Connexion ppp
  • wvdial : Configuration de la connexion ppp et des commandes AT d'initialisation du modem
  • usbutils : Lister les périphériques USB

Après le premier branchement, on a accès à la carte micro-SD (f000):

lsusb
Bus 001 Device 009: ID 2357:f000

Pour activer le modem (9000):

sudo usb_modeswitch -v 2357 -p f000 -V 2357 -P 9000 -W -I -n -M '5553424312345678000000000000061e000000000000000000000000000000' -2 '5553424312345678000000000000061b000000020000000000000000000000'
lsusb
Bus 001 Device 009: ID 2357:9000

Pour que la modification soit persistante :

sudo nano /lib/udev/rules.d/40-usb_modeswitch.rules
# TP_LINK MA180
[...]
# TP_LINK MA260
ATTRS{idVendor}=="2357", ATTRS{idProduct}=="9000", RUN+="usb_modeswitch '%b/%k' -V 2357 -P 9000 -W -I -n -M '5553424312345678000000000000061e00000000000000000 0000000000000' -2 '55534243123456780000000000$
[...]
LABEL="modeswitch_rules_end"
[...]
# TP-Link MA260
ATTRS{idVendor}=="2357", ATTRS{idProduct}=="f000", RUN+="/usr/bin/eject -s %N"
sudo udevadm control --reload-rules

Débranchez et rebranchez la clef - ou bien redémarrer.

tail -f /var/log/syslog

Pour la connexion, on va utiliser wvdial :

sudo nano /etc/wvdial.conf
[Dialer Defaults]
Modem Type = Analog Modem
Stupid Mode = 1
ISDN = 0
New PPPD = yes
Phone = *99#
Modem = /dev/ttyUSB2
Username = 'orange';
Password = 'orange';
Baud = 460800
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
# Orange :
Init3 = AT+CGDCONT=1,"IP","orange"
#Init4 = AT$QCPDPP=1,1,"orange","orange"
[Dialer pin]
Modem Type = Analog Modem
Stupid Mode = 1
ISDN = 0
New PPPD = yes
Phone = *99#
Modem = /dev/ttyUSB2
Baud = 460800
Init1 = AT+CPIN=0000

Pour que la connexion soit persistante :
sudo nano /etc/network/interfaces
[...]
auto ppp0
iface ppp0 inet wvdial

Remarques :

  • La commande "wvdialconf" pourra vous aider à trouver les bons paramètres si vous utilisez un autre modem
  • Remplacez "orange" par les données de votre fournisseur (utilisateur, mot de passe et APN
  • Si votre carte SIM à un code PIN, vous devrez lancez "vwdial pin" avant toute connexion (remplacez "0000" par votre code PIN)
  • Certains modems 3G consomment énormément. Si vous avez une très bonne alimentation USB (≥ 2A) avec un bon câble assez court :
nano /boot/config.txt
[...]
# USB power manager from 0.6A to 1.2A
max_usb_current=1

Sources :
http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?p=12081#p12081
http://ubuntuforums.org/showthread.php?t=2197164&page=4#post_12961452
http://www.raspberrypi.org/forums/viewtopic.php?f=29&t=100244
http://raspberrypi.stackexchange.com/questions/27708/is-setting-max-usb-current-1-to-give-more-power-to-usb-devices-a-bad-idea