Stombi Home Page

Debian Wheezy : Root Google Nexus 5

Android phone : Q9000

Le but est de rooter le Nexus 5 avec les fichiers CF-Auto-root trouvés ici

ATTENTION : faites une sauvegarde avant de débloquer le bootloader et de rooter car cela effacera toutes vos données.

Fichier de configuration pour Udev

Créez un fichier /etc/udev/rules.d/99-android.rules

1
sudo nano /etc/udev/rules.d/99-android.rules

qui contient :

1
SUBSYSTEM=="usb", MODE="0666", GROUP="plugdev"

Redémarrez Udev

1
sudo service udev restart

Dépôt Backports et outils Android

Ajoutez le dépôt Backports dans /etc/apt/sources.list

1
deb http://ftp.fr.debian.org/debian wheezy-backports main

Installez les paquets

1
2
sudo apt-get update
sudo apt-get install android-tools*

Activer le débogage USB sur le téléphone

  • Allez dans Paramètres > À propos du téléphone
  • Cliquez plusieurs fois sur Numéro de build (7 fois, jusqu’à qu’un message dise que le mode développeur est activé)
  • Revenez dans Paramètres, il y a maintenant un menu Options pour les développeurs
  • Cliquez dessus et activez Débogage USB

Éteignez le téléphone

Débloquer le Bootloader

Redémarrez en mode fastboot

  • Connectez le téléphone et l’ordinateur avec le câble USB
  • Démarrez en mode fastboot en laissant appuyé simultanément sur les boutons volume haut, volume bas et power
  • Relâchez dès que vous voyez un bouton vert marqué Start

Débloquez le Bootloader

1
sudo fastboot oem unlock

Sur le téléphone cela demande une confirmation. Naviguez sur Yes avec les touches du volume et confirmez avec le bouton power

Root

Récupérez le zip de CF-Auto-root et l’extraire

1
2
3
unzip CF-Auto-Root-hammerhead-hammerhead-nexus5.zip
cd image/
sudo fastboot boot CF-Auto-Root-hammerhead-hammerhead-nexus5.img

Voilà c’est tout, attendez que le téléphone redémarre normalement, ça prends 2 ou 3 minutes.

Android : GPS fix téléphone chinois

Android phone : Q9000

Les GPS intégrés dans les téléphones chinois ne sont pas souvent optimisés pour le réseau français.

Par exemple le mien sur un téléphone Noname MTK6589 Q9000 faisait un peu n’importe quoi et prenait une éternité pour détecter les satellites (du genre 5 minutes en se déplaçant en voiture). Maintenant c’est entre 5 et 30 secondes.

Pour cela j’ai juste eu à ajouter 2 fichiers de configuration :

  • gps.conf
  • et gpsconfig.xml
(gps.conf) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
NTP_SERVER=0.fr.pool.ntp.org
NTP_SERVER=1.fr.pool.ntp.org
NTP_SERVER=2.fr.pool.ntp.org
NTP_SERVER=3.fr.pool.ntp.org
XTRA_SERVER_1=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info
# 4 - Debug, 5 - Verbose
DEBUG_LEVEL =0

# Intermediate position report, 1=enable, 0=disable
INTERMEDIATE_POS=0

# Accuracy threshold for intermediate positions
# less accurate positions are ignored, 0 for passing all positions
ACCURACY_THRES=0

# Report supl ref location as position, 1=enable, 0=disable
REPORT_POSITION_USE_SUPL_REFLOC=1

# Wiper (wifi positioning), 1=enable, 0=disable
ENABLE_WIPER=1

################################
##### AGPS server settings #####
################################

# FOR SUPL SUPPORT, set the following
SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_NO_SECURE_PORT=7276
SUPL_SECURE_PORT=7276

# FOR C2K PDE SUPPORT, set the following
# C2K_HOST=c2k.pde.com or IP
# C2K_PORT=1234

#################################
##### AGPS Carrier settings #####
#################################
CURRENT_CARRIER=common
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_SSL_ENABLE=FALSE

# TRUE for "User Plane", FALSE for "Control Plane"
DEFAULT_USER_PLANE=TRUE
(gpsconfig.xml) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?xml version="1.0" encoding="utf-8"?>
<glgps xmlns="http://www.glpals.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.glpals.com/ glconfig.xsd" >

<!-- It is highly recommended to view/edit this file with syntax-highlighting
    editors such as notepad++ or vim. This way, one can easily distinguish
    comments and valid code.

    This file is a primary template for Linux-like platforms.
-->

<!-- HAL essentials: Serial port, log, NMEA, IRM, NVRAM, LTO -->
<hal
    acPortName="/dev/ttyMT0"
    lBaudRate="115200"

    cLogEnableInitState="false"
    cLogEnabled="false"
    acLogDirectory="/data/gps/log/"

    acNmeaOutName="/data/gps/gpspipe"

    ctrlPipe="/data/gps/glgpsctrl"
    acNvStoDir="/data/gps/"

    ltoFileName="lto.dat"
/>

<!-- GPIO is essential for reliable host interface reset and power saving.
    There are currently two mutually exclusive mechanisms (sysfs or rfkill) to
    GPIO control the REGPU or NSTANDBY pin on the GNSS chipset.
-->

<!-- GPIO sysfs (in most cases) -->
<hal
    gpioNStdbyPath="/sys/class/rfkill/rfkill1/state"
    gpioNResetPath="/sys/class/sec/gps/GPS_nRST/value"
    gpioDelayMs="150"
/>

<!-- Android: -->
<hal
    lcsApiSockName="/data/gps/gps"
/>

<!-- GPIO rfkill -->
<!--hal
    rfkillNStdby="gps"
/-->

<!--  (Re)aiding configuration options for LBS, SUPL (depending on type selected) -->
<!--
Re-aiding type (0-none, 1-SUPL, 2-LBS, 3-LBS and SUPL)
Re-aiding retry interval in seconds.
Re-aiding interval in seconds.
-->

<hal
    ReAidingType="1"
    ReAidingRetryIntervalSec="20"
    ReAidingIntervalSec="1200"
/>

<!-- Location-Base-Services (LBS)  -->
<hal
    LbsEnable="true"
    LbsLocal="false"
    LbsServer="bcmls2.glpals.com"
    LbsPort="7275"
    LbsSyncTimeSec="60"
    LbsSyncLto="true"
    LbsSyncCells="true"
/>

<!-- SUPL: only applicable to devices with cellular modem
    "arp-supl-use-apn" is attribute used in Android only
 -->
<hal
    arp-supl-enable="true"
    arp-supl-cap-msb="true"
    arp-supl-cap-msa="true"
    arp-supl-cap-ecid="false"
    enhanced-assisted="false"
    arp-supl-use-apn="true"
    acSuplServer="supl.google.com"
    SuplPort="7276"
    tlsCertPath="/system/etc/security/"
    TISEnabled="false"
    RILEnabled="true"
/>

<!-- Client-Base Extended Ephemeris (CBEE) -->
<hal
    acEEDir="/data/gps/"
    acEEFileName="cbee.cbee"
    arp-cbee-write-nvmem-on-new-be="true"
    arp-cbee-signal-cbeegen-on-new-be="true"
    arp-cbee-cbeegen-app-path="/data/gps/cbee_gen"
    arp-cbee-cbeegen-app-param="-debug -ln=/data/gps/log/cbee_gen_log.txt"
/>

<!-- Control Plane: only applicable to devices with cellular modem-->
<hal
    cp-enhanced-assisted="false"
    LPmode="false"
    cp-cold-start="false"
    cp-guard-time-sec="1"
/>

<!-- Sensors: Valid on Android 2.3 or higher -->
<hal
    SensorsEnable="false"
    SensorsMask="0F"
    SensorsLog="true"
    SensorsType="5"
    SensorsMoEnable="true"
    SensorsTurnEnable="false"
    SensorsRawAcclGyroEnable="false"

    SensorsStepEnable="false"
    SensorsAcclInRunBiasCal="true"
    SensorsEstBiasInWalking="true"
    req_pos.acc="1000"
/>

<!----------------------------------------------------------------------------->
<!-- GLL Engine: See glgpsapi.h for supported parameters -->
<gll
    LogPriMask="LOG_INFO"
    LogFacMask="LOG_GLLAPI | LOG_NMEA"
    FrqPlan="FRQ_PLAN_16_369MHZ_2PPM"
    RfType="GL_RF_4751_DANUBE"
    WarmStandbyTimeout1Seconds="0"
    WarmStandbyTimeout2Seconds="0"
/>

<!-- Pulse-Per-Second (PPS) -->
<gll
    pps-enable="false"
    pps-offset-ms="0"
    pps-width-ns="100"
/>

<!----------------------------------------------------------------------------->
<!-- List of jobs can be performed by the GPS controller    -->
<!-- Periodic Position Fix using default settings -->
<job id="Normal">
    <task>
        <req_pos/>
    </task>
</job>

<!-- Periodic Position Fix using default settings -->
<job id="Periodic">
    <task>
        <req_pos/>
    </task>
</job>
</glgps>

Voilà ce qu’il faut faire, attention il faut avoir les droits root sur le téléphone.

  • Copiez les fichiers sur la carte SD
  • Utilisez un terminal pour monter /system en lecture/écriture (rw). J’utilise Android Terminal Emulator
1
2
$ su
# mount -o rw,remount /system
  • Copiez ou déplacez les fichiers avec un gestionnaire de fichiers dans /system/etc/. J’utilise ES Explorateur de Fichiers
  • Remettez les bonnes permissions sur les fichiers : rw-r--r--. (Facile à faire avec ES Explorateur dans les propriétés des fichiers)
  • Remontez /system en lecture seule (ro)
1
# mount -o ro,remount /system
  • Redémarrez le téléphone.

Source avec plus d’info : forum.jtgeek.com

Raspberry Pi : Webcam Logitech c270 et Motion

Raspberry Pi : Webcam Logitech c270 et Motion

Transformer le Raspberry Pi en serveur de streaming de webcam USB (ici Logitech c270, environ 25€) est très simple.

Mise a jour des paquets

1
sudo apt-get update && sudo apt-get upgrade

Installer Motion

1
sudo apt-get install motion

Configurer Motion

Il y a deux changements a faire dans le fichier /etc/motion/motion.conf

1
sudo nano /etc/motion/motion.conf
1
2
3
4
5
# demarrer en mode daemon par defaut à off
daemon on

# rendre la webcam accessible par le réseau par defaut à on
webcam_localhost off

Activer le mode daemon dans le fichier /etc/default/motion

1
sudo nano /etc/default/motion
1
2
# Activer le mode daemon par defaut no
start_motion_daemon=yes

Demarrer Motion

1
sudo service motion start

Pour aller plus loin, toutes les modifications comme le changement de resolution, la detection de mouvement etc. sont à faire dans le fichier /etc/motion/motion.conf

Plus d’info et Source : How To: Raspberry PI Web Cam Server

XBMC: MySQL et Thumbnails partagés

XBMC: MySQL et Thumbnails partagés

Contexte

J’ai un Seagate Goflex Home qui me sert de NAS et plusieurs machines clientes où XBMC est installé.

Note : je ne veux pas que les thumbnails soient générés sur les machines clientes et que le Textures13.db soit synchronisé comme c’est possible depuis la version 12 (Frodo) de XBMC pour des raisons d’espace disque.

  • les médias sont stockés sur le NAS
  • les thumbnails (vignettes) aussi et sont accessibles via un partage Samba
  • la médiathèque est également stockée sur le NAS dans une base MySQL

Le but ici est d’accéder depuis plusieurs clients ( Raspberry Pi avec OpenELEC, Desktop, etc. ) à la médiathèque de XBMC et aux vignettes pour bénéficier de tous les avantages de cette centralisation. ( reprise de la lecture sur un autre client à l’endroit où cela en était, vignettes disponibles partout etc.)

MySQL

XBMC utilise deux bases, une pour la video et une pour la musique. Par défaut ce sont MyVideos et MyMusic.

Il faut créer un utilisateur pour XBMC :

1
2
GRANT ALL ON `MyMusic%`.* TO 'xbmc'@'%' IDENTIFIED BY 'mot_de_passe';
GRANT ALL ON `MyVideos%`.* TO 'xbmc'@'%' IDENTIFIED BY 'mot_de_passe';

Pour plus de détails, voir le wiki de XBMC

Configuration XBMC

Créez ou modifiez le ficher advancedsettings.xml dans le dossier userdata

(advancedsettings.xml) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<advancedsettings>
    <videodatabase>
        <type>mysql</type>
        <host>192.168.1.10</host>
        <port>3306</port>
        <user>xbmc</user>
        <pass>mot_de_passe</pass>
    </videodatabase>

    <musicdatabase>
        <type>mysql</type>
        <host>192.168.1.10</host>
        <port>3306</port>
        <user>xbmc</user>
        <pass>mot_de_passe</pass>
    </musicdatabase>

    <pathsubstitution>
      <substitute>
      <from>special://masterprofile/Thumbnails</from>
      <to>smb://user:password@192.168.1.10/Thumbnails</to>
      </substitute>
  </pathsubstitution>
</advancedsettings>

Changez le host en mettant l’IP de votre NAS, et le mot de passe en mettant celui de l’utilisateur MySQL créé plus tôt.

Partage Samba pour les vignettes

Il suffit de créér un partage Samba dans smb.conf comme ceci :

1
2
3
4
5
6
7
8
9
10
[Thumbnails]
    comment = Thumbnails
    path = /media/data/Thumbnails
    valid users = my_user
    force group = my_group
    create mask = 0660
    directory mask = 0770
    writable = yes
    available = yes
    browsable = yes

Dans le ficher advancedsettings.xml ajoutez la substitution pour votre partage Samba dans la section <pathsubstitution>

1
2
3
4
5
6
<pathsubstitution>
  <substitute>
      <from>special://masterprofile/Thumbnails</from>
      <to>smb://user:password@192.168.1.10/Thumbnails</to>
  </substitute>
</pathsubstitution>

Création d’un plugin OpenSearch

J’ai ajouté un plugin de recherche OpenSearch comme il y avait sur l’ancienne version de ce blog à la différence que celui-ci cherche sur Google.

J’utilise l’opérateur site: pour restreindre la recherche à stombi.net

Il suffit de créer un fichier xml au bon format :

(opensearch.xml) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>Stombi Home Page</ShortName>
<Description>Recherchez sur stombi.net</Description>
<Url type="text/html" method="get" template="http://google.com/search?q=site:www.stombi.net {searchTerms}"></Url>
<Image height="16" width="16" type="image/x-icon">
http://www.stombi.net/favicon.ico
</Image>
<LongName>Stombi Home Page</LongName>
<Developer>stombi</Developer>
<SyndicationRight>open</SyndicationRight>
<AdultContent>false</AdultContent>
<Language>fr</Language>
<OutputEncoding>UTF-8</OutputEncoding>
<InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>

Puis d’ajouter une balise link dans _includes/custom/head.html

1
<link rel="search" type="application/opensearchdescription+xml" title="Stombi Home Page" href="http://www.stombi.net/opensearch.xml" />

Vous pouvez l’ajouter dans Firefox par exemple dans la liste des moteurs de recherche.

liste des moteurs de recherche

Raspberry Pi : installer Aircrack-ng

Installer les dépendances

On a besoin de OpenSSL et éventuellement de SQLite3 si on veut utiliser Airolib-ng

1
sudo apt-get install libssl-dev build-essential libsqlite3-dev iw wireless-tools

Installer Aircrack-ng

Récuperer le code source

1
2
3
wget http://download.aircrack-ng.org/aircrack-ng-1.2-beta1.tar.gz
tar -zxvf aircrack-ng-1.2-beta1.tar.gz
cd aircrack-ng-1.2-beta1

Compiler

1
2
make
sudo make install

Compiler avec le support Airolib-ng

1
2
make sqlite=true
sudo make sqlite=true install

Mise à jour

1
sudo airodump-ng-oui-update

Plugin météo pour Octopress

Il fallait bien que j’affiche la météo, ça ne sert à rien donc c’est rigoureusement indispensable :–) Code source ici

C’est un plugin qui affiche les conditions météos actuelles dans la sidebar de Octopress (ici à droite). Les données sont fournies par openweathermap.org

Installation

  1. Copiez openweathermap.html dans le dossier _includes/custom/asides.
  2. Récuperez une clé pour l’API chez openweathermap.org (c’est gratuit)
  3. Mettez à jour votre _config.yml en ajoutant les variables openweathermap_* Exemple ci-dessous :
1
2
3
4
5
6
7
8
9
10
11
12
13
# Weather
# API key
openweathermap_key:
# H1 title
openweathermap_title: Weather
# City name
openweathermap_city_name: Los Angeles
# Units : metric or imperial
openweathermap_units: imperial
# Lang : en, ru, it, sp, ua, de, pt, ro, pl, fi, nl, fr, bg, se, zh_tw, zh_cn, tr 
openweathermap_lang: en
# cache data to localStorage n seconds
openweathermap_cache: 3600
  1. Ajoutez openweathermap.html dans default_asides de votre _config.yml. Exemple:
1
default_asides: [custom/asides/openweathermap.html, custom/asides/about.html, asides/twitter.html, asides/recent_posts.html]
  1. Regénérez votre blog

Souder un port série externe sur Seagate GoFlex Home

Quelques photos d’une petite modification que j’ai faite il y a quelques années sur mon Seagate GoFlex Home, l’ajout d’un port série externe.

Souder les fils sur les pins de la carte mère

C’est mal fait, mais ça marche. C’est mieux fait chez Scott Nicholas chez qui j’avais copié ce montage. Il y a aussi beaucoup d’autres infos, notament à propos de Debian sur le Seagate GoFlex Home

Pins sur la carte mère

Le connecteur jack 2.5mm fixé sur le boitier

Connecteur jack 2.5mm

Le cable CA-42 USB avec le jack male à l’autre bout

Cable CA-42

Ajouter une CSS pour les tableaux dans Octopress

Modifier head.html

Ajoutez la feuille de style dans source/_includes/custom/head.html

1
<link href="/stylesheets/tables.css" media="screen, projection" rel="stylesheet" type="text/css" />

CSS pour les tableaux

Copiez cette CSS dans source/stylesheets/

(tables.css) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
* + table {
  border-style:solid;
  border-width:1px;
  border-color:#e7e3e7;
  margin-bottom:1em;
  font-size: 0.8em;
  font-family: "Roboto", sans-serif;
}

* + table tr {
  border: 0;
  border-top: 1px solid #CCC;
  background-color: white;
  margin: 0;
  padding: 0;
}

* + table tr:nth-child(2n) {
  background-color: #F8F8F8;
}

* + table tr th, * + table tr td {
  font-size: 1em;
  border: 1px solid #CCC;
  margin: 0;
  padding: 0.4em 1em;
}

* + table tr th {
  font-weight: bold;
  background-color: #F0F0F0;
  text-align:center;
}

* + table th[align="left"], * + table td[align="left"] {
  text-align:left;
}

* + table th[align="right"], * + table td[align="right"] {
  text-align:right;
}

* + table th[align="center"], * + table td[align="center"] {
  text-align:center;
}

Exemple

1
2
3
4
5
Colonne alignée à gauche | Colonne centrée | Colonne alignée à droite
: ---------------------- |:---------------:| ------------------------:
Vert                     | Chien           | Pomme
Jaune                    | Chat            | Poire
Rouge                    | Ours            | Abricot
Colonne alignée à gauche Colonne centrée Colonne alignée à droite
Vert Chien Pomme
Jaune Chat Poire
Rouge Ours Abricot

Firefox : Envoyer les liens magnet vers un daemon Transmission

L’idée ici c’est d’envoyer les liens magnet à un daemon Transmission juste en cliquant dessus. On peut faire ça rapidement en utilisant transmission-remote dans un script bash.

Prérequis

Si on n’a pas transmission-remote il faut l’installer. Dans Debian wheezy il est dans le paquet transmission-cli

1
$ sudo apt-get install transmission-cli

Le script bash

(add-to-transmission.sh) download
1
2
3
4
5
6
7
#!/bin/bash

TORRENT="$1"
HOST="remote.host.net"
PORT=9091

transmission-remote ${HOST}:${PORT} -N ~/.netrc -a ${TORRENT}

Il faut rendre le script executable

1
$ chmod u+x add-to-transmission.sh

Si on a besoin d’une autentification, le plus simple est de créer un .netrc dans son dossier personnel.

(.netrc) download
1
2
3
machine remote.host.net
login mon_login
password mon_password

Associer le script aux liens magnet dans Firefox

  1. ouvrir Firefox à l’adresse about:config
  2. clic droit > Nouvelle > Valeur booléenne
  3. Nom : network.protocol-handler.expose.magnet
  4. Valeur : false
Nom de l’option Statut Type valeur
network.protocol-handler.expose.magnet défini par l’utilisateur booléen false

Au prochain clic sur un lien magnet, Firefox va proposer de l’associer à une application. Associez le script add-to-transmission.sh