Accueil > hack, Linux > Linux is everywhere_PQI AIRCard, partie III: Les mains sous le capot

Linux is everywhere_PQI AIRCard, partie III: Les mains sous le capot

thompson-and-ritchieIl y a parfois des lettres recommandées qui me remplissent de joie. Surtout quand elles arrivent de Honk-Kong. Ca y est !!! la pqi Air Card commandée sur ebay est arrivée, joie joie !!
Donc faisant suite aux deux post précédent ici et , entrons maintenant dans l’étude et surtout la modification du matériel tant désiré. Juste avant de commencer, juste une petite réflexion que je me suis faite et en rapport avec l’image sur là gauche. Imaginez la réaction de (feu) Dennis Ritchie et Ken Thompson si 40 ans plus tôt ils avaient su que leur système serait porté sur un matériel de 2mm d’épaisseur, de 2 x3 cm et pesant 1g !!! Quand on voit la taille du PDP11 qui a vu naître le système UNIX c’est tout simplement hallucinant. Et pourtant c’est bien la même logique de programmation qui tourne dessus. Preuve si il reste encore à le démontrer de l’extraordinaire vision des deux programmeurs et de la supériorité des systèmes Unix (dont Linux). Mais trêve de bavardages, c’est parti pour une séquence d’embarqué inédit.

Tout d’abord on déballe la carte et on vérifie si elle marche comme prévue. A noter que l’emballage de la pqi est particulièrement soigné. La carte reposant dans une jolie boîte en carton sur un lit de mousse. Le vendeur a fourni dans le package une carte mini-SD de 16G. On insère la carte mini-SD dans la Air Card. Puis on branche le tout dans un lecteur de Sd card. Essayez de vous munir d’un lecteur USB externe c’est plus simple pour l’expérimentation que les lecteurs parfois intégrés sur les Laptops. En effet pour rebooter, il suffira de débrancher/rebrancher le câble USB. On évite donc les manipulations directes sur la carte.
Une fois pluggée, la carte est détectée par l’OS qui vous propose de la monter de façon très classique.
On voit apparaître un répertoire MISC et DCIM, qui contient lui même un répertoire WIFI_199avec trois images. On en profite pour glisser une photo dans le répertoire DCIM comme serait censé le faire un appareil photo normalement prédestiné à la Air Card.
Par défaut, la carte est censée être un point d’accès Wifi non sécurisé. On vérifie tout d’abord que c’est bien le cas. Sur le PC hôte:

root@T60:/home/lemoi# iwlist wlan0 scan
(…)
Cell 11 – Address: B0:38:29:01:08:36
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=61/70 Signal level=-49 dBm
Encryption key:off
ESSID: »PQI Air card »
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=00000000170751dd
Extra: Last beacon: 2704ms ago
(…)

A priori pas de problème majeur. On se connecte donc dessus. L’adressage de votre PC se fera dynamiquement à partir de l’adresse ip: 192.168.1.50 la carte étant elle adressée sur le 192.168.1.1
Une fois cela fait on peut se connecter sur l’interface Web de la carte comme précisé dans la notice. On utilisera donc l’URL suivante: http://192.168.1.1 dans notre navigateur.
On tombe sur l’interface d’administration de la Air Card et on pourra visualiser/copier la photo précédemment copiée dans le répertoire DCIM. Tout marche donc bien comme prévu. A noter que lors de mes expérimentations durant de longues heures, la connexion Wifi est tout à fait stable dans le temps. Le fonctionnement de la carte aussi. Pas besoin de rebooter. C’est plutôt de bonne augure.
Bon commençons à fouiner. Si on lance un scan de port sur la carte voilà ce que l’on obtient:

root@T60:/home/lemoi# nmap -v 192.168.1.1
Starting Nmap 5.00 ( http://nmap.org ) at 2013-03-06 16:20 CET
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 16:20
Scanning 192.168.1.1 [1 port]
Completed ARP Ping Scan at 16:20, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 16:20
Completed Parallel DNS resolution of 1 host. at 16:20, 0.00s elapsed
Initiating SYN Stealth Scan at 16:20
Scanning air.card (192.168.1.1) [1000 ports]
Discovered open port 23/tcp on 192.168.1.1
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 21/tcp on 192.168.1.1
(…)

Tiens tiens, un serveur telnet et ftp. Intéressant… On avait vu dans le chapitre I, que le firmware refermait ces utilitaires (buildés sur BusyBox). De là à les avoir laissé dans les scripts d’ Init c’était vraiment inespéré.
Ils sont vraiment très gentils chez Pqi ;)
Sur le PC on tente donc de se connecter sur le serveur telnet et Ôoooo Miracle on obtient

lemoi@T60:~$ telnet 192.168.1.1
># cat /proc/version
Linux version 2.6.32.28 (root@ubuntu-desktop) (gcc version 4.5.2 (Sourcery G++ Lite 2011.03-42) ) #244 PREEMPT Mon Jun 11 11:39:31 CST 2012
># cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 421.06
Features : swp half fastmult edsp java
CPU implementer : 0×41
CPU architecture: 5TEJ
(…)
CPU revision : 5
Hardware : KeyASIC Ka2000 EVM
Revision : 0000
Serial : 0000000000000000
># ls
bin dev home lib lost+found proc sbin tmp var
config_value etc init linuxrc mnt root sys usr www

Il y a de quoi s’amuser et découvrir les spécificités du système. L’accès à la console confirmera l’analyse du firmware faite précédemment (chapitre I) et apportera quelques précisions supplémentaires. Je vous laisse le soin de cette partie.
Dans la même veine, on pourra accéder au serveur FTP qui expose par défaut deux répertoires qui sont les répertoires de montage:

lemoi@T60:~$ ftp 192.168.1.1
Connected to 192.168.1.1.
220 Operation successful
Name (192.168.1.1:lemoi):
230 Operation successful
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 Operation successful
150 Directory listing
drwxr-xr-x 4 0 0 0 Jan 1 1970 mtd
drwxr-xr-x 4 0 0 8192 Jan 1 1970 sd
226 Operation successful
ftp> cd sd
250 Operation successful
ftp> dir
200 Operation successful
150 Directory listing
drwxr-xr-x 3 0 0 8192 Jan 1 00:00 DCIM
drwxr-xr-x 2 0 0 8192 Jan 1 00:00 MISC
226 Operation successful
ftp> quit
221 Operation successful

Quelques heures plus tard, on a envie d’aller un peu plus loin. En effet, l’accès à la console via telnet n’est qu’une étape, mais on ne peut pas vraiment s’attaquer au projet (cad la modification du firmware) si on a pas une vrai console série. Alors dans leur extrême bonté, les concepteurs n’auraient-ils pas laissé la possibilité de se connecter à un UART ? On peut toujours rêver me direz-vous … Eh bien il se trouve que j’aime bien rêver et j’en suis souvent récompensé.
Attention, les manipulations qui suivent demandent un minimum de doigté, un peu de matériel et surtout de la patience.
mtsPour le matériel tout d’abord, il vous faudra un fer à souder correct avec une panne fine et réglable en température car on travaille sur du support très fragile.
Pour le démontage du boitier de la carte, on préférera un scalpel plus précis q’un cuter (mais attention, ça coupe !!!)
On trouve des scalpels jetables en pharmacie. Le jeu de pince style médical est plus que recommandé car on utilisera des fils les plus fins possibles pour la connexion.
Enfin, la loupe binoculaire n’est pas obligatoire mais soulage quand même bien les yeux et permet de vérifier la qualité de votre travail une fois celui-ci effectué. La loupe vous permettrait aussi de vous donner une deuxième chance si d’aventure une catastrophe arrivait (voir plus loin).
tear_downOn attaquera l’Air Card au scalpel à la jointure des deux coques qui par chance présente un thermo-collage assez fin donc peu résistant. Il faut tout de même veiller à ne pas trop rentrer profondément la lame à l’intérieur de la carte afin de ne pas détériorer les composants. La photo ci-contre montre ce que l’on obtient une fois le travail réalisé. On voit le SOC KeyAsic mentionné dans le chapitre I. La partie à droite c’est l’antenne Wifi.

uart_ En tournant le circuit. Miracle !!! on identifie sans problème l’ UART grâce à la sérigraphie Rx, Tx, et Gnd (entouré en rouge sur la photo ). Alors là, c’est incroyable. Depuis le temps que je bidouille du matériel embarqué c’est la première fois qu’ il est si facile d’identifier les broches. Vous pouvez rembarquer vos oscillos ca sera pour une prochaine fois … Vraiment Excellent cette petite carte. Il y a plus qu’à souder.

Si vous voulez éviter la mésaventure  qu’il m’est arrivé, prière de bien lire les indications qui suivent.

Comme dit précédemment, le circuit intégré est très fin. Cela donne des pistes et des pads aussi très fins et donc très fragiles. Une fois la soudure réalisée, les contraintes mécaniques exercées par les fils suffisent à arracher les pastilles (pads) et les pistes qui vont avec. C’est ce qu’il m’est malheureusement arrivé. J’ai pu in-extremis récupérer 2 mm de piste valable qu’il a fallu néanmoins mettre à nu en grattant le vernis avec la pointe du scalpel sous la loupe binoculaire. L’acétone ne venant pas à bout du vernis. L’opération s’est révélée longue et très délicate.

La solution consiste à coller les fils à la cyano en amont de la soudure sur le CI. De ce fait, aucune contrainte mécanique sur les fils ne pourra détériorer le circuit. Pour la cyano, on utilisera de préférence la version en gel qui ne coulera pas sur les zones de soudure.

final
Voilà ce que l’on obtient une fois les soudures réalisés. La face antérieure du boitier plastique est légèrement découpée pour que les fils comprimés par le boitier n’impliquent pas de moment de flexion sur le CI. Du sctoch d’électrien viendra fermer le tout en permettant de laisser le montage démontable. La communication s’établie à 38400 bauds (8N1) sur des niveaux de tensions 3.3V. On pourra utiliser un câble USB / Série FTDI de type TTL-232R-3V3 pour la connexion.

Quel joie de regarder le système booter depuis la console :) et d’accéder ensuite à un prompt root.

(…)
———————————————————-
Production mode-VER. 138_JUN132012_M -Date 13/06/2012
————————————————————
sleep disable
Please press Enter to activate this console.
starting pid 82, tty ‘/dev/ttyS0′: ‘-/bin/ash ‘
#
(…)

plateformePour résumer:
Nous disposons donc d’un accès root via le port série pour notre carte. De quoi tranquillement commencer à modifier à chaud la configuration;  notamment le réseau (ce que ne permettait pas l’accès telnet). Pour le transfert de fichier, nous avons la facilité apportée par l’accès direct à la SD-Card. Les 16G disponibles nous permettront aisément l’expérimentation sans contrainte de place (ce qui est plutôt rare pour de l’embarqué) Ci-contre, un aperçu du système de développement. Par commodité, le lecteur externe USB de SD-Card a été démonté. On peut donc vraiment commencer à travailler sur la plateforme et je vous donne rendez-vous très prochainement pour les premiers résultats.

About these ads
Catégories:hack, Linux Mots-clés : , , , ,
  1. tth
    août 12, 2013 à 6:17

    En fait, la toute première version (alors nommée Unics (en référence à Multics (epic fail))) a été conçue en assembleur sur un PDP-7, pour faire tourner le jeu Space War. Et le langage C a été inventé pour faciliter le portage sur le PDP-11. Ils savaient vivre en ce temps-là…

  2. fdv
    septembre 30, 2013 à 9:03

    bello, bravo

  1. mars 18, 2013 à 12:14

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Suivre

Recevez les nouvelles publications par mail.

%d blogueurs aiment cette page :