Je me suis procuré récemment un second routeur TP-Link Archer C2600 afin d'offrir le WI-FI ac à la maison. Ce routeur est supporté par OpenWRT ainsi que LEDE. Contrairement à mon WRT4300, le Archer C2600 nécessite l’utilisation d'une procédure de récupération permettant de "forcer" le routeur à télécharger une nouvelle image au démarrage. Une fois convertit à OpenWRT | LEDE la procédure "standard" de mise à jour s'applique pour les versions subséquentes.

Références:

Images disponibles

Pour les intéressés voici les différentes images disponibles pour ce modèle de routeur. Personnellement je recommande à plus récente version "Community" clean mais la version 18.06 n'est pas encore tout à fait stable. Entre-temps je recommande plutôt la version officielle OpenWRT 18.06:

TP-Link (images officielles)

Image d'origine pour le TP-Link Archer C2600:

OpenWRT "SNAPSHOT"

OpenWRT version SNAPSHOT (image quotidienne de la version de développement en cours):

OpenWRT 18.06.0

Version OpenWRT 18.06.0:

Version "Community" OpenWRT 18.06.0 Clean sans Luci (merci à Heinz)

Version "Community" OpenWRT 18.06.0 Full avec Luci pré-installé (merci à Heinz)

LEDE 17.01.5

Version LEDE 17.01.5:

Mise à jour

La procédure de mise à jour ne s'applique qu'à partir d'un routeur sur lequel OpenWRT | LEDE a déjà été installé. Si votre routeur utilise toujours la version par défaut du fournisseur il faut d'abord suivre la méthode plus bas consistant à faire l'installation initiale.

Pour un routeur utilisant déjà OpenWRT | LEDE, se connecter au routeur via SSH:

whoami@localhost:~$ ssh root@OpenWRT

Télécharger et vérifier l’image:

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget --no-check-certificate https://downloads.openwrt.org/releases/18.06.0/targets/ipq806x/generic/openwrt-18.06.0-ipq806x-tplink_c2600-squashfs-sysupgrade.bin
root@OpenWrt:~# wget --no-check-certificate https://downloads.openwrt.org/releases/18.06.0/targets/ipq806x/generic/sha256sums
root@OpenWrt:~# sha256sum -c sha256sums  2>/dev/null | grep OK
openwrt-18.06.0-ipq806x-tplink_c2600-squashfs-sysupgrade.bin: OK

ATTENTION: À FAIRE SUR RÉSEAU CABLÉ, PAS SUR WIFI! Lancer le processus de mise à jour - laisser aller le processus même s'il semble demander une confirmation!

root@OpenWrt:~# sysupgrade -v /tmp/openwrt-18.06.0-ipq806x-tplink_c2600-squashfs-sysupgrade.bin
Saving config files...
...
Sending TERM to remaining processes ... ubusd askfirst logd rpcd netifd odhcpd uhttpd dnsmasq ntpd 
Sending KILL to remaining processes ... askfirst 
Switching to ramdisk...
Performing system upgrade...
Unlocking os-image ...
Unlocking rootfs ...

Writing from <stdin> to os-image ...     

Writing from <stdin> to rootfs ...     
Appending jffs2 data from /tmp/sysupgrade.tgz to rootfs..
    
Upgrade completed
Rebooting system...
umount: can't unmount /dev/pts: Resource busy
umount: can't unmount /dev: Resource busy
umount: can't unmount /tmp: Resource busy
packet_write_wait: Connection to 192.168.80.2 port 22: Broken pipe

L'appareil redémarrera et le led WAN (ressemble à une antenne satellite) deviendra ambré durant quelques secondes puis le led de mise sous tension Φ clignotera durant plusieurs minutes pendant laquelle la mise à jour s'appliquera.

  • LEDE: environs 5-6 minutes
  • LEDE "Community" Clean: environs 8-10 minutes

Note: Avec les version précédentes il y avait un problème avec le redémarrage ou l'appareil devenait complètement éteint avec aucun led actif nécessitant alors un redémarrage manuel on|off afin que la mise à jour s'applique adéquatement.

Résultat LEDE 18.06.0 version "Officielle":

BusyBox v1.28.3 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 18.06.0, r7188-b0b5c64c22
 -----------------------------------------------------
root@th0ma7-wifi:~# uname -a
Linux th0ma7-wifi 4.14.54 #0 SMP Mon Jul 30 16:25:17 2018 armv7l GNU/Linux

Résultat LEDE 17.01.4 version "Community" clean:

BusyBox v1.25.1 () built-in shell (ash)

     _________
    /        /\      _    ___ ___  ___
   /  LE    /  \    | |  | __|   \| __|
  /    DE  /    \   | |__| _|| |) | _|
 /________/  LE  \  |____|___|___/|___|                      lede-project.org
 \        \   DE /
  \    LE  \    /  -----------------------------------------------------------
   \  DE    \  /    Reboot (17.01-SNAPSHOT, r3566-98c003e)
    \________\/    -----------------------------------------------------------

 -----------------------------------------------------------------------------
 |                                                                           |
 | Build time: 2017-10-21 10:17 CEST                                         |
 |                                                                           |
 | Cezary Jackiewicz (obsy), http://eko.one.pl                               |
 |                                                                           |
 -----------------------------------------------------------------------------
 | Machine: TP-Link Archer C2600                                             |
 | Uptime: 0d, 00:11:23                                                      |
 | Load: 0.12 0.52 0.42                                                      |
 | Flash: total: 23.9MB, free: 23.0MB, used: 4%                              |
 | Memory: total: 469.5MB, free: 448.7MB, used: 4%                           |
 | WAN:                                                                      |
 | LAN: 192.168.80.2, leases: 0                                              |
 | radio0: mode: ap, ssid: th0ma7, channel: 48, conn: 0                      |
 | radio1: mode: ap, ssid: th0ma7, channel: 1, conn: 0                       |
 -----------------------------------------------------------------------------
 | CPU freq: 1.20GHz, 800.00MHz                                              |
 | CPU temperature: 50.38 C, 50.38 C, 51.58 C, 45.85 C                       |
 -----------------------------------------------------------------------------
root@OpenWrt|LEDE:~# uname -a
Linux th0ma7-wifi 4.4.93 #0 SMP Wed Oct 18 20:14:25 2017 armv7l GNU/Linux

Luci

L'interface d'administration graphique Luci n'est pas installée sur certaines images (ex: LEDE "Community" clean ou encore les snapshots OpenWRT). Pour installer et activer LUCI:

root@OpenWrt|LEDE:~# opkg update
root@OpenWrt|LEDE:~# opkg install luci-ssl luci-i18n-base-fr
root@OpenWrt|LEDE:~# /etc/init.d/uhttpd enable
root@OpenWrt|LEDE:~# /etc/init.d/uhttpd start

Ensuite j'efface les fichiers de configuration proposés par défaut (/etc/config/*-opkg):

root@OpenWrt|LEDE:~# rm -f /etc/config/luci-opkg /etc/config/sqm-opkg /etc/config/uhttpd-opkg

Installation initiale

La procédure d'installation initiale s'applique uniquement lorsque l'on convertit le routeur de l'image du fournisseur TP-Link vers OpenWRT |LEDE. Une fois convertit la procédure de mise à jour standard s'applique ensuite.

En simple la procédure consiste à amorcer le routeur en mode récupération en maintenant actif le bouton "reset" durant 15 secondes: le routeur tente alors de télécharger une image nommée "ArcherC2600_1.0_tp_recovery.bin" à partir d'une adresse source 192.168.0.66. La portion installation initiale qui suit explique comment mettre en place un environnement sous Linux afin d'arriver à convertir le routeur à OpenWRT | LEDE. Une fois convertit les mises à jour subséquente utiliseront le mécanisme standard de mise à jour d'OpenWRT | LEDE.

Serveur TFTP

À partir d'Ubuntu installer un serveur TFTP ainsi qu'un client tftp:

$ sudo apt-get install tftpd tftp xinetd

Créer un répertoire /tftpboot avec accès à tous:

$ sudo mkdir /tftpboot
$ sudo chown nobody:root /tftpboot
$ sudo chmod 777 /tftpboot

Créer un fichier de démarrage xinetd situé à /etc/xinetd.d/tftp:

service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}

Redémarrer le service atftp géré à travers xinetd:

$ sudo systemctl restart xinetd

Préparation de l'Image

En simple il s'agit de télécharger le ou les images voulues dans le répertoire /tftpboot et ensuite de créer un lien symbolique nommé ArcherC2600_1.0_tp_recovery.bin pointant vers l'image voulue. Une fois les images téléchargées/copiées dans le répertoire, créer le lien symbolique:

$ ln -s /tftpboot/luci-ipq806x-C2600-squashfs-factory.bin /tftpboot/ArcherC2600_1.0_tp_recovery.bin
$ ls -la
drwxrwxrwx  4 nobody root     4096 jan 22 18:25 .
drwxr-xr-x 28 root   root     4096 jan 21 22:00 ..
lrwxrwxrwx  1 root   root       39 jan 22 18:25 ArcherC2600_1.0_tp_recovery.bin -> luci-ipq806x-C2600-squashfs-factory.bin
drwxr-xr-x  2 root   root     4096 sep 26 11:15 Archer C2600_V1_160902
-rw-r--r--  1 root   root 18584358 jan 21 22:24 Archer_C2600_V1_160902_1475196820201r.zip
-rw-r--r--  1 root   root  7062000 jan 22 18:25 luci-ipq806x-C2600-squashfs-factory.bin
-rw-r--r--  1 root   root  4477189 jan 21 22:02 openwrt-ipq806x-C2600-squashfs-factory.bin

Question de vous assurer hors de tout doute que l'image téléchargée est valide il est préférable de faire un test md5sum:

$ cd /tftpboot
$ wget https://downloads.lede-project.org/releases/17.01.0-rc2/targets/ipq806x/generic/sha256sums
$ sha256sum -c sha256sums --ignore-missing
luci-ipq806x-C2600-squashfs-factory.bin: Réussi

On peut alors tester le service TFTP:

whoami@localhost:~$ tftp
tftp> connect localhost
tftp> get ArcherC2600_1.0_tp_recovery.bin
Received 7116597 bytes in 0.4 seconds
tftp> quit

Configuration réseau

Maintenant que tout est en place il ne reste plus qu'à connecter notre routeur (port 1-4, mais pas WAN) directement à notre ordinateur. À noter qu'il est aussi possible d'utiliser un commutateur pantin ("dummy" switch) entre les deux ce qui permet de valider l'état des ports réseau (UP/DOWN).

Ensuite il s'agit de forcer la mise en place d'une adresse IP statique 192.168.0.66 à notre interface réseau de notre ordinateur:

$ sudo ip link set eth0 down
$ sudo ip addr add 192.168.0.66/24 dev eth0
$ sudo ip link set eth0 up

Tester de nouveau le service TFTP cette fois en utilisant l'adresse 192.168.0.66:

whoami@localhost:~$ tftp
tftp> connect 192.168.0.66
tftp> get ArcherC2600_1.0_tp_recovery.bin
Received 7116597 bytes in 0.4 seconds
tftp> quit

Mise à jour via TFTP

Afin de "voir" la mise à jour s'effectuer je conseille grandement de faire le suivi des journaux systèmes de votre ordinateur. Dans une console faire ce qui suit:

$ tail -f /var/log/syslog

Maintenant il est venu le temps de démarrer le routeur en mode récupération. Utiliser un objet pointu tel un trombone afin de maintenir enfoncé le bouton "reset" sur le côté et mettre sous tension le routeur. Maintenir enfoncé le bouton "reset" environs 15 secondes ou jusqu'à ce qu'à ce que la luminosité du led associé WPS 🔃 change. À ce moment relâcher le bouton "reset" et le message suivant devrait alors apparaître dans les journaux systèmes:

Jan 22 17:55:48 localhost atftpd[22511]: Advanced Trivial FTP server started (0.7)
Jan 22 17:55:48 localhost atftpd[22511]: Serving ArcherC2600_1.0_tp_recovery.bin to 192.168.0.1:2056
Jan 22 18:00:48 localhost atftpd[22511]: atftpd terminating after 300 seconds
Jan 22 18:00:48 localhost atftpd[22511]: Main thread exiting

La mise à jour prend environs 5 minutes à s'appliquer. Le routeur redémarre ensuite en utilisant la nouvelle image mais dans mon cas n'a pas activé son service DHCP! Nous devons alors modifier notre adresse statique pour 192.168.1.x:

$ sudo ip link set eth0 down
$ sudo ip addr del 192.168.0.66/24 dev eth0
$ sudo ip addr add 192.168.1.66/24 dev eth0
$ sudo ip link set eth0 up

On valide ensuite l'obtention d'une nouvelle adresse:

root@eclipse:/var/log# ip addr show dev wlan0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 5c:c5:d4:60:90:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.66/24 brd 192.168.1.255 scope global dynamic wlan0
       valid_lft 251660sec preferred_lft 251660sec
    inet6 fe80::b7ce:ce10:b70b:9cd8/64 scope link 
       valid_lft forever preferred_lft forever

On peut alors tenter une première connexion:

root@eclipse:/tftpboot# ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.1' (RSA) to the list of known hosts.

BusyBox v1.25.1 () built-in shell (ash)

     _________
    /        /\      _    ___ ___  ___
   /  LE    /  \    | |  | __|   \| __|
  /    DE  /    \   | |__| _|| |) | _|
 /________/  LE  \  |____|___|___/|___|                      lede-project.org
 \        \   DE /
  \    LE  \    /  -----------------------------------------------------------
   \  DE    \  /    Reboot (17.01.0-rc2, r3131-42f3c1f)
    \________\/    -----------------------------------------------------------

 === WARNING! ================================================================
 There is no root password defined on this device!
 Use the "passwd" command to set up a new password in order to prevent
 unauthorized SSH logins.
 -----------------------------------------------------------------------------
root@lede:~#

Ajustement des led

Par défaut le fonctionnement des indicateurs d'état led sur le routeur ne fournissent pas beaucoup d'information puisque la majorité sont éteint. Avec LEDE rc2 les indicateurs d'état du WIFI (radio0 et radio1) ne sont toujours pas supportés par le pilote réseau. Cependant tous les autres indicateurs sont fonctionnels mais requiert quelques ajustements que voici:

Retirer la configuration par défaut:

uci del system.led_usb1
uci del system.led_usb2
uci del system.led_wan
uci del system.led_lan
uci commit

Mettre en place la nouvelle configuration:

uci add system led
uci set system.@led[-1].name='USB 1'
uci set system.@led[-1].sysfs='c2600:white:usb_2'
uci set system.@led[-1].trigger='usbport'
uci set system.@led[-1].port='usb1-port1'
uci add_list system.@led[-1].port='usb2-port1'
uci set system.@led[-1].default='0'

uci add system led
uci set system.@led[-1].name='USB 2'
uci set system.@led[-1].sysfs='c2600:white:usb_4'
uci set system.@led[-1].trigger='usbport'
uci set system.@led[-1].port='usb3-port1'
uci add_list system.@led[-1].port='usb4-port1'
uci set system.@led[-1].default='0'

uci add system led
uci set system.@led[-1].name='LAN'
uci set system.@led[-1].sysfs='c2600:white:lan'
uci set system.@led[-1].trigger='netdev'
uci set system.@led[-1].port_mask='0x1e'
uci set system.@led[-1].dev='br-lan'
uci set system.@led[-1].mode='link tx rx'
uci set system.@led[-1].default='0'

uci add system led
uci set system.@led[-1].name='WAN off'
uci set system.@led[-1].sysfs='c2600:amber:wan'
uci set system.@led[-1].trigger='none'
uci set system.@led[-1].default='1'

uci add system led
uci set system.@led[-1].name='WAN on'
uci set system.@led[-1].sysfs='c2600:white:wan'
uci set system.@led[-1].trigger='switch0'
uci set system.@led[-1].port_mask='0x20'
uci set system.@led[-1].default='0'

uci add system led
uci set system.@led[-1].name='Power'
uci set system.@led[-1].sysfs='c2600:white:power'
uci set system.@led[-1].trigger='none'
uci set system.@led[-1].default='1'

Appliquer les changements:

uci commit