mardi 7 juillet 2015

Ubuntuphone - Tutoriel : Comment paramétrer le Meizu MX4 Ubuntu Edition pour mtp, adb et ssh

L'un des principaux avantages des Ubuntuphones, c'est de pouvoir facilement prendre la main dessus au travers du protocole abd, voir d'initier des sessions SSH facilement dessus. Malheureusement, le Meizu MX4 Ubuntu Edition se montre quelque peu réticent. Heureusement le 'fix' prends moins de temps à mettre en place qu'une pub de TF1.

Pré-requis

Nous allons commencer par installer tous les éléments qui nous seront utiles pour ce tutoriel :
$ sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
$ sudo add-apt-repository ppa:phablet-team/tools
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9 ubuntu-sdk phablet-tools
Puis nous allons activer le mode debug sur le téléphone. Sur le téléphone se rendre sur Paramètre Système -> A propos de ce téléphone -> Mode développeur et activer le mode developpeur.

Paramétrage du MTP

Tout d'abord, nous sommes de nombreux Insiders a avoir constaté que le téléphone de Meizu était mal reconnu par notre OS favoris. Impossible de monter le téléphone en Mass Storage, donc d'y transférer des fichiers par USB, dont nos clés SSH, ni même de le piloter via adb.
Dans ce cas, la première des choses à faire est d'interroger lsusb
  • Téléphone non branché :
$ lsusb  
Bus 002 Device 003: ID 058f:6364 Alcor Micro Corp. AU6477 Card Reader Controller  
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub  
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub  
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  
Bus 001 Device 005: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse  
Bus 001 Device 004: ID 046d:c31d Logitech, Inc. Media Keyboard K200  
Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270  
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub  
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub  
Bus 003 Device 002: ID 03f0:8711 Hewlett-Packard Deskjet 2050 J510  
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • Téléphone branché :
$ lsusb
Bus 002 Device 003: ID 058f:6364 Alcor Micro Corp. AU6477 Card Reader Controller
Bus 002 Device 004: ID 2a45:0c02 
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse
Bus 001 Device 004: ID 046d:c31d Logitech, Inc. Media Keyboard K200
Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 03f0:8711 Hewlett-Packard Deskjet 2050 J510
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
On peut raisonnablement penser que la ligne Bus 002 Device 004: ID 2a45:0c02 corresponde à notre appareil.
Mettons de côté de l'ID du fabricant et ID du modèle respectivement dans les variables VENDORID et MODELID:
$ export VENDORID="2a45"
$ export MODELID="0c02"
FUSE peut permettre à un autre utilisateur que root de monter un système de fichier tiers. Pour cela il faut décommenter la ligne user_allow_otherdans le fichier /etc/fuse.conf:
$ sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf
Ensuite, nous devons modifier les règle udev en charge du MTP qui se trouvent dans le fichier /lib/udev/rules.d/69-libmtp.rules pour y déclarer le Meizu :
$ sudo bash -c 'cat << EOF >> /etc/udev/rules.d/69-libmtp.rules
# Meizu MX4
ATTR{idVendor}=="2a45", ATTR{idProduct}=="0c02", SYMLINK+="MeizuMX4Ubuntu", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
EOF'
Normalement, en branchant votre Meizu MX 4 Ubuntu Edition, vous devriez le voir monté automatiquement.

Configuration de adb

Il est possible de piloter le Meizu MX4 Ubuntu Edition via adb (Android Debug Bridge). Pour le configurer, il suffit d'ajouter l'idVendor dans le fichier $HOME/.android/adb_usb.ini.
$ mkdir $HOME/.android
$ echo "0x2a45" >> $HOME/.android/adb_usb.ini
Puis on redemarre le service adb :
$ adb kill-server
Le téléphone Meizu MX4 Ubuntu Edition est maintenant reconnu lorsque l'on tape la commande :
$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
75HACL66VJ8X    device
Pour accéder au téléphone, il suffit de taper :
$ adb shell
phablet@ubuntu-phablet:~$

Configuration de SSH

Pouvoir monter son téléphone comme une unité de stockage amovible, c'est bien.
Pouvoir piloter son téléphone en ligne de commande, c'est mieux.
Mais ce qui serait top c'est de pouvoir le faire sans fil, sans avoir à sortir le téléphone de sa poche. Et bien c'est possible de le faire, grâce au WiFi au travers de son réseau local.

L'échange de clés

Afin de sécurisé la connexion en ligne de commande entre les appareils mobiles tournant sur Ubuntu et les postes de travail, il est conseillé d'utliser phablet-shell, la commande issue des phablet-tools permettant de mettre en place une connexion SSH entre les appareils. Au premier lancement, phablet-shell va gérer l"échange de clé, puis se connecter en SSH sur l'appareil mobile
$ phablet-shell 
/home/winael/.ssh/known_hosts updated.
Original contents retained as /home/winael/.ssh/known_hosts.old
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
Welcome to Ubuntu 15.04 (GNU/Linux 3.10.35+ armv7l)

 * Documentation:  https://help.ubuntu.com/
Last login: Sun Jun 28 14:44:03 2015 from localhost.localdomain
phablet@ubuntu-phablet:~$

Fixation de l'adresse IP

Depuis l'appareil mobile Meizu MX4 Ubuntu Edition on liste l'IP courante pour le téléphone
$ sudo -i
[sudo] password for phablet: 
# ip addr show wlan0
11: wlan0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 38:bc:1a:1f:7e:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.23/24 brd 192.168.1.255 scope global dynamic wlan0
       valid_lft 82074sec preferred_lft 82074sec
    inet6 fe80::3abc:1aff:fe1f:7eb4/64 scope link 
       valid_lft forever preferred_lft forever

On se rend dans le répertoire /etc/NetworkManager et on regarde le contenu du paramétrage de sa connexion :
# cd /etc/NetworkManager/system-connections
# ls
# cat 
On édite ensuite la connexion :
  • On affiche d'abord la liste des connexions paramétrées
# nmcli connection show
NAME                       UUID                                  TYPE             DEVICE 
Livebox-Navijobard         0c0a0040-ee0b-494c-a297-c5bfc2c1133c  802-11-wireless  wlan0  
AndroidAP                  830dbbc7-8b8e-42be-a41c-9584988731b1  802-11-wireless  --     
NUMA Welcome               aafc220a-c594-44a4-9095-483fccddbbc6  802-11-wireless  --     
Nexus 5 Network            b7801b53-637f-4dde-a250-3479184ab3d7  bluetooth        --     
/208150004998871/context1  9e611658-b475-7c4e-954b-edc06b75ab87  gsm              ril_0  
NUMA Inside                baf064d2-588c-40aa-a291-1efb8779ec3a  802-11-wireless  --     
  • On édite la connexion qui nous interesse
# nmcli connection edit Livebox-Navijobard

===| nmcli interactive connection editor |===

Editing existing '802-11-wireless' connection: 'Livebox-Navijobard'

Type 'help' or '?' for available commands.
Type 'describe [.]' for detailed property description.

You may edit the following settings: connection, 802-11-wireless (wifi), 802-11-wireless-security (wifi-sec), 802-1x, ipv4, ipv6
  • On affiche la configuration actuelle
nmcli> print
===============================================================================
                Connection profile details (Livebox-Navijobard)
===============================================================================
connection.id:                          Livebox-Navijobard
connection.uuid:                        0c0a0040-ee0b-494c-a297-c5bfc2c1133c
connection.interface-name:              --
connection.type:                        802-11-wireless
connection.autoconnect:                 yes
connection.timestamp:                   1436215756
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
connection.gateway-ping-timeout:        0
-------------------------------------------------------------------------------
802-11-wireless.ssid:                   Livebox-Navijobard
802-11-wireless.mode:                   infrastructure
802-11-wireless.band:                   --
802-11-wireless.channel:                0
802-11-wireless.bssid:                  --
802-11-wireless.rate:                   0
802-11-wireless.tx-power:               0
802-11-wireless.mac-address:            49:AB:3D:5G:6E:D4
802-11-wireless.cloned-mac-address:     --
802-11-wireless.mac-address-blacklist:  
802-11-wireless.mtu:                    auto
802-11-wireless.seen-bssids:            7B:04:E7:AC:8A:FE,7B:04:E7:AC:8A:FF
802-11-wireless.hidden:                 no
802-11-wireless.powersave:              --
-------------------------------------------------------------------------------
802-11-wireless-security.key-mgmt:      wpa-psk
802-11-wireless-security.wep-tx-keyidx: 0
802-11-wireless-security.auth-alg:      open
802-11-wireless-security.proto:         
802-11-wireless-security.pairwise:      
802-11-wireless-security.group:         
802-11-wireless-security.leap-username: --
802-11-wireless-security.wep-key0:      --
802-11-wireless-security.wep-key1:      --
802-11-wireless-security.wep-key2:      --
802-11-wireless-security.wep-key3:      --
802-11-wireless-security.wep-key-flags: 0 (none)
802-11-wireless-security.wep-key-type:  0 (unknown)
802-11-wireless-security.psk:           --
802-11-wireless-security.psk-flags:     0 (none)
802-11-wireless-security.leap-password: --
802-11-wireless-security.leap-password-flags:0 (none)
-------------------------------------------------------------------------------
ipv4.method:                            auto
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         
ipv4.routes:                            
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
-------------------------------------------------------------------------------
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
-------------------------------------------------------------------------------
  • On se rend dans la configuration ipv4
nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, addresses, address-labels, routes, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-send-hostname, dhcp-hostname, never-default, may-fail
  • On passe la configuration IPv4 en manuelle
nmcli ipv4> set method manual
  • On modifie l'adresse IP, le masque et la passerelle
nmcli ipv4> set addresses 192.168.1.101/24 192.168.1.255
  • On modifie l'adresse DNS
nmcli ipv4> set dns 8.8.8.8
  • On sort de la configuration de l'IPv4
nmcli ipv4> back
  • On active la connexion automatique
nmcli> set connection.autoconnect TRUE
  • On affiche la nouvelle configuration
nmcli> print
  • On sauvegarde et on quitte
nmcli> save
nmcli> quit
  • On redemarre le téléphone puis on regarde son adresse ip
phablet@ubuntu-phablet:~$ ifconfig
ccmni0    Link encap:Ethernet  HWaddr fe:3f:26:a0:08:56  
          inet addr:10.163.45.115  Mask:255.255.255.0
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:134 errors:0 dropped:0 overruns:0 frame:0
          TX packets:140 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:33299 (33.2 KB)  TX bytes:11014 (11.0 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:492 errors:0 dropped:0 overruns:0 frame:0
          TX packets:492 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:45396 (45.3 KB)  TX bytes:45396 (45.3 KB)

wlan0     Link encap:Ethernet  HWaddr 38:bc:1a:1f:7e:b4  
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::3abc:1aff:fe1f:7eb4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:718 (718.0 B)  TX bytes:692 (692.0 B)
L'adresse IP est bien paramétrée avec l'adresse que nous avons fixée
Il ne nous reste plus qu'à paramétrer le serveur DNS de notre box internet ou dans le fichier /etc/hosts
Ensuite nous pouvons faire :
$ ssh phablet@mx4ubuntu
pour vous connecter en ligne de commande ou ajouter un signet vers sftp://phablet@mx4ubuntu:/home/phablet dansnautilus pour "monter" votre téléphone grâce au WiFi et vous simplifier la vie pour les transferts de fichiers
A bientôt pour d'autres astuces !!!

1 commentaire:

  1. Bonjour à toi ! Superbe article j'ai hâte de testé cela dés que j'aurais reçu mon meizu normalement demain j'espère !!
    J'ai mis ton blog dans mes favoris maintenant ;-) à bientôt pour d'autres tuto !
    Fabtux

    RépondreSupprimer