RTFM et Android SDK

Etant un linuxien patenté, mon premier réflexe face une question relative à du matériel ou à du logiciel est assez simple: rtfm. Ce qui signifie: lire le put*** de manuel. Seulement voilà: la manuel n’était pas fourni avec mon téléphone. N’ayant pas (encore!) d’accès shell sur mon Samsnung Galaxy S3 (aka SGS3), je n’ai pas pu faire un man quelque chose. Je doute de toute façon de pouvoir trouver, par exemple, une énumération des gestures par exemple.

J’ai donc fini par trouver un manuel. Je cherchai quelque chose de beaucoup plus technique, en particulier au niveau logiciel. Un vrai détail de ce que sont les procédures de boot par exemple. Un manuel technique, je le cherche encore. Je finirai bien par trouver :)

Concernant le manuel de l’utilisateur, il y a beaucoup de choses très intéressantes. Je me demande pourquoi je n’avais pas cherché plutôt ce type de manuel pour l’iPhone ou l’iPad. Le chapitre « Getting Started » est plein de ces petits tips qu’on découvre un peu au hasard si on ne lit pas le manuel dès le début. Comme ceci par exemple.

C’est aussi le moment de lire les chapitres type « Camera » pour apprendre à (bien!) se servir de l’appareil photo ou encore « Settings » qui permet de faire le tour de toutes les options. Pour savoir comment rapidement, par exemple, modifier le timeout de l’écran avant qu’il se mette en veille.

Bref même si je n’ai pas trouvé les détails techniques que je cherchais, j’ai tout de même après plein de choses fort utiles pour utiliser mon téléphone tel qu’il est.

Mais je voudrais vraiment voir de plus près les entrailles de ce téléphone. Après tout, j’ai choisi un Android _aussi_ pour pouvoir appréhender de façon plus complète et ouverte la bête que i0S qui est fermé comme une huître. L’idéal m’a semblé être d’installer le SDK. Visiblement, d’après un article page 49 de MISC de ce mois ci, c’est un must-have pour faire du pentest d’Android. Je ne cherche pas à pentester Android. Par contre j’aimerai bien avoir une vue plus synthétique de la façon dont ça fonctionne en général et surtout sur mon Samsung en particulier.

J’ai donc entrepris d’installer le SDK, sous Arch Linux, c’est très simple puisque tout le nécessaire se trouve dans AUR. Mon téléphone semble détecté:

# lsusb | grep Samsung
Bus 001 Device 006: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1]

Mais en fait non: adb devices ne me renvoie pas de périphérique. C’est alors que j’ai appris que l’activation USB du périphérique était possible. En clair: on peut utiliser le téléphone par USB. Mais pas par défaut (cf premier post). Pour cela il suffit d’aller dans « Paramètres => Options de développement ==> débogage USB ». Un pop-up vous indique que votre périphérique va être monté comme un périphérique de stockage et que cela ne doit être utilisé qu’à des fins de développement. En effet:

$ adb devices
List of devices attached
4df1... device

Alors ADB c’est quoi? Eh bien c’est le Android Debug Bridge dont la page nous dit:
« Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an emulator instance or connected Android-powered device. It is a client-server program that includes three components (…) » ce qui signifie: « Android Debug Bridge est un utilitaire en ligne de commande polyvalent qui vous permet de communiquer avec une plateforme Android émulée ou un périphérique Android connecté. C’est un programme client-serveur composé de 3 éléments (…) »

Bien, alors comment avoir un shell sur mon téléphone? Ce qui a quand même motivé cet article en premier lieu!! C’est simple:

$ adb shell
shell@android:/ $

Bon, par contre, on gardera le pdf niveau manuel :

shell@android:/ $ man man
/system/bin/sh: man: not found

Pour le reste c’est du grand classique:

shell@android:/ $ ls -l
drwxr-xr-x root     root              2012-09-26 18:46 acct
drwxrwx--- system   cache             2012-09-27 14:00 cache
dr-x------ root     root              2012-09-26 18:46 config
lrwxrwxrwx root     root              2012-09-26 18:46 d -> /sys/kernel/debug
drwxrwx--x system   system            2012-09-26 18:46 data
-rw-r--r-- root     root          116 1970-01-01 01:00 default.prop
drwxr-xr-x root     root              2012-09-26 18:46 dev
drwxrwx--x radio    system            2012-06-25 16:35 efs
lrwxrwxrwx root     root              2012-09-26 18:46 etc -> /system/etc
lrwxrwxrwx root     root              2012-09-26 18:46 factory -> /efs
-rwxr-x--- root     root       152288 1970-01-01 01:00 init
-rwxr-x--- root     root         3612 1970-01-01 01:00 init.bt.rc
-rwxr-x--- root     root         2344 1970-01-01 01:00 init.goldfish.rc
-rwxr-x--- root     root        40154 1970-01-01 01:00 init.rc
-rwxr-x--- root     root         2751 1970-01-01 01:00 init.smdk4x12.rc
-rwxr-x--- root     root         4359 1970-01-01 01:00 init.smdk4x12.usb.rc
drwxr-xr-x root     root              1970-01-01 01:00 lib
-rw-r--r-- root     root         1619 1970-01-01 01:00 lpm.rc
drwxrwxr-x root     system            2012-09-26 18:46 mnt
drwxr-xr-x root     root              1970-01-01 01:00 preload
dr-xr-xr-x root     root              1970-01-01 01:00 proc
drwx------ root     root              2012-06-25 17:29 root
drwxr-x--- root     root              1970-01-01 01:00 sbin
lrwxrwxrwx root     root              2012-09-26 18:46 sdcard -> /mnt/sdcard
drwxr-xr-x root     root              2012-09-26 18:46 sys
drwxr-xr-x root     root              2012-09-26 18:46 system
-rw-r--r-- root     root          272 1970-01-01 01:00 ueventd.goldfish.rc
-rw-r--r-- root     root         3873 1970-01-01 01:00 ueventd.rc
-rw-r--r-- root     root         1666 1970-01-01 01:00 ueventd.smdk4x12.rc
lrwxrwxrwx root     root              2012-09-26 18:46 vendor -> /system/vendor

N’étant pas (encore!) root, je n’ai finalement pas le droit de faire grand chose…Et il y a énormément de commandes de base qui ne sont pas présentes: less, cut, groups, find etc… « Command not found ». C’est sacrément frustrant d’ailleurs…

Je sens que je vais bien m’amuser avec ce téléphone, je sais pas pourquoi mais je sens que je vais vraiment bien m’amuser…une fois root ;)

A la découverte d’Airdroid euh…d’Android ^^

Ah…Ca y’est, j’ai enfin reçu mon nouveau téléphone. Il s’agit d’un Samsung Galaxy S3,le Pebble Blue, si c’est pas poétique ça…J’ai décrit par ailleurs les raisons qui m’ont fait lâcher mon iPhone américain pour un Samsung coréen.
En ouvrant la boîte, j’avoue, j’ai été un peu déçu par son aspect plastique. Ca fait un peu « plastok » comme dirait l’autre. Pour le coup la petite bande de fer cerclant les iPhones me devient rassurante. J’ai acheté une coque, mais contrairement à celle que j’avais prise pour mon iPhone, je me suis centré sur l’aspect « solide » plutôt que sur l’aspect « esthétique ». On verra à l’usage.

Une fois toute installée, première découverte de l’interface Samsung. comment peut on encore faire « Ã§a » dans le monde Linux. Mystère et boule de gomme..Ma prochaine mission sera de trouver un équivalent à E17 sur Android. Je veux changer de WM :'(
C’est, en effet, un peu mal léché (« cumbersome » est l’adjectif qui me vient à l’esprit) et nettement moins intuitif que le design iOS, de mon point de vue c’est indéniable. Bizarrement les apps au bord carré ça me saute aux yeux par rapport à celles d’Apple tout en rondeur. Comme quoi, le procès pour « bords ronds » infligé à Samsung par Apple ce n’est pas que du pinaillage de brevet à 2 balles ;)

Mais bon, après tout, il passera les 3/4 de son temps dans ma poche et, surtout, il a un grand écran avec une bonne définition. Enfin, contrairement à l’iPhone, je vais pouvoir gérer ma musique _très important pour moi ça_ sans iTunes et avec un simple mount, comme pour une clé USB. Le bonheur sur terre quoi :)

J’ai donc branché mon bout de plastique Samsung Galaxy S3 sur mon PC en USB. J’ai ouvert Thunar et je m’attendais tranquillou à cliquer sur le dossier qui va bien pour stocker la musique qui va bien. Et là, horreur, malheur, rien n’apparaît dans Thunar. Pourtant il est bien branché non?
Un coup de dmesg | tail plus tard, toujours pas de trace du téléphone. Késako? m’interroge-je un brin désarçonné tout de même. Tout de façon, la commande précédente, c’est un truc de newbie, tout le monde le sait hein…Normale qu’elle voit rien…Commande de m***
Un tail -20 sur /var/log/messages.log plus tard, je n’ai que ça:

Sep 17 18:19:39 localhost mtp-probe: checking bus 1, device 7: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-5"
Sep 17 18:19:39 localhost mtp-probe: bus: 1, device: 7 was not an MTP device

WTF??? Alors je réfléchis: je me souviens vaguement que sur le Samsung à mon frère chéri que j’aime (même s’il m’appelle jamais, ingrat ^^) il fallait cocher une option pour autoriser le pingouin à monter sur la nouvelle planche de surf en plastique de Samsung. Ceci dit ça n’expliquerait pas que je ne vois rien dans les logs.
Une petite recherche google plus tard, j’ai appris quelle était la raison (scélérate!!) pour laquelle je ne pouvais pas tranquillou charger ma musique: Google a décidé que les dernières versions d’Android ne passerait plus par USB mais par MTP.

Mais que fait Google? C’est quoi ce protocole? Inventé par Microsoft, mais c’est pas vrai. Je quitte Apple pour me retrouver avec un protocole Microsoft. Si ça, c’est pas allé de Charybde en Scylla…

Bon positivons, Android c’est Linux; Arch c’est Linux. Ca devrait le faire :)
En effet:

# mtp-detect
libmtp version: 1.1.4

Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung GT P7310/P7510/N7000/I9070/I9100/I9300 Galaxy Tab 7.7/10.1/S2/S3/Nexus/Note/Y.
   Found 1 device(s):
   Samsung: GT P7310/P7510/N7000/I9070/I9100/I9300 Galaxy Tab 7.7/10.1/S2/S3/Nexus/Note/Y (04e8:6860) @ bus 1, dev 6
Attempting to connect device(s)
PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
LIBMTP PANIC: failed to open session on second attempt
Unable to open raw device 0
OK.

Là je me suis surpris à taper dans google « libmtp git »…Et les micro-secondes de moulinage m’ont servi à réfléchir. J’avais quitté mon iPhone pour ne plus avoir à bidouiller avec Fuse ou libmobiledevice pour contourner iTunes et là, je recherche du code pour voir ce qui va pas. J’hallucine ou quoi??? Et ma musique???

Réflexion faite je me suis dit qu’il fallait m’adapter de façon différente et je me suis souvenu d’un lien vers une app prénommée Airdroid. C’est, ou plutôt ce serait, une app’ me permettant de charger ma musique en wifi direct depuis mon navigateur. Je me dis qui ne tente rien n’a rien. Me voilà à l’installer sur mon « pebble blue », c’est gratuit. Pour le coup c’est vachement clair et intuitif. Newbie-compliant. En 5 minutes je me suis retrouvé devant ça.

Tout peut vraiment être géré via une interface qui n’est pas sans rappeler Apple. Claire, concise, précise et avec laquelle on peut tout faire, et surtout ce qui m’intéresse: charger la musique, gérer les contacts ou l’agenda etc…

Tout ça pour dire qu’à première vue le logo ne ment pas sur la marque: Android le robot froid et un peu encombré dans la démarche n’a pas la rondeur avenante d’une pomme qui roule…Cumbersome, on vous dit…

Répéter une ligne dans les tableaux LibreOffice Writer

Voilà une petite astuce toute simple qui pourra être utile. Imaginons que vous ayez besoin d’un certain nombre de tableaux avec la première ligne identique. Comme des feuilles d’inventaire par exemple. Il vous faut répéter cette première ligne sur tous les tableaux qui seront distribués aux agents affectés à l’inventaire.

La manoeuvre classique dans Writer pour insérer un tableau consiste à aller dans le menu Tableau -> insérer (ou Ctrl+F12)**. Vous insérez votre tableau d’inventaire avec 4 ou 5 colonnes et, disons 2000 lignes. Ce qui fait 84 pages tout de même.

Et là, vous souhaitez que la première ligne de votre tableau se répète sur toutes les autres feuilles ce qui permettra d’en imprimer un certain nombre à distribuer aux agents en charge de l’inventaire. Ce qui facilite tout de même, de façon fort compréhensible, le travail…

Il y a pour cela dans Libre Office Writer une petite manip’ à effectuer: une fois votre première ligne correctement initialisée sur le premier tableau, vous allez dans le menu Tableau et vous cochez la ligne « Répéter les lignes de titre ». Et, magie, votre première ligne de tableau se retrouve sur tout les autres tableaux suivants, formatage compris!!

Cela évite de faire 83 Ctrl-C/Ctrl-V …

**A noter: il est possible de faire cela dès l’insertion du tableau: il suffit de cocher l’option « titre » avec « Répéter sur chaque page » bien coché et le choix de la ligne bien précise.