Le MK20 est un clavier 20 touches munies chacune d’un écran couleur. Un 21ème écran est proposé au dessus avec deux boutons rotatif.

Je n’ai pas pu résister au plaisir coupable d’investir dans cet appareil (d’apparence) inutile.

Le produit vient d’arriver dans ma boite au lettres. Le produit est assez bien packagé avec une belle boite.

Un petit cube gris type métallisé est fourni pour, semble-t-il, pouvoir brancher une alimentation USB ainsi qu’un pc dessus.
Parce que périphérique n’est pas un simple clavier, il consomme un petit peut de courant sur le 5V de l’usb (1A d’après l’étiquette). Il est composé
- clavier basé sur un microcontroleur GD32 et configurable avec QMK
- D’un système embarqué RiscV Allwinner T113-S3 et qui semble tourner avec OpenWRT d’après ce qu’on peut voir sur la carte micro-SD de 4Go fournie avec le système.
Si on le branche à un pc (Ubuntu) on obtient un dmesg long comme le bras :
[282806.922899] usb 1-2.4.1: new high-speed USB device number 40 using xhci_hcd
[282807.002827] usb 1-2.4.1: New USB device found, idVendor=05e3, idProduct=0610, bcdDevice=32.98
[282807.002844] usb 1-2.4.1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[282807.002851] usb 1-2.4.1: Product: USB2.0 Hub
[282807.037757] hub 1-2.4.1:1.0: USB hub found
[282807.038171] hub 1-2.4.1:1.0: 4 ports detected
[282807.378848] usb 1-2.4.1.2: new full-speed USB device number 41 using xhci_hcd
[282807.477045] usb 1-2.4.1.2: New USB device found, idVendor=4250, idProduct=426f, bcdDevice= 1.00
[282807.477063] usb 1-2.4.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[282807.477070] usb 1-2.4.1.2: Product: syk_keyboards
[282807.477076] usb 1-2.4.1.2: Manufacturer: SYK
[282807.684068] input: SYK syk_keyboards as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.4/1-2.4.1/1-2.4.1.2/1-2.4.1.2:1.0/0003:4250:426F.001B/input/input66
[282807.790893] hid-generic 0003:4250:426F.001B: input,hidraw4: USB HID v1.11 Keyboard [SYK syk_keyboards] on usb-0000:04:00.3-2.4.1.2/input0
[282807.796045] hid-generic 0003:4250:426F.001C: hiddev2,hidraw5: USB HID v1.11 Device [SYK syk_keyboards] on usb-0000:04:00.3-2.4.1.2/input1
[282807.800816] input: SYK syk_keyboards Mouse as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.4/1-2.4.1/1-2.4.1.2/1-2.4.1.2:1.2/0003:4250:426F.001D/input/input67
[282807.801227] input: SYK syk_keyboards System Control as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.4/1-2.4.1/1-2.4.1.2/1-2.4.1.2:1.2/0003:4250:426F.001D/input/input68
[282807.853689] input: SYK syk_keyboards Consumer Control as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.4/1-2.4.1/1-2.4.1.2/1-2.4.1.2:1.2/0003:4250:426F.001D/input/input69
[282807.854036] hid-generic 0003:4250:426F.001D: input,hidraw6: USB HID v1.11 Mouse [SYK syk_keyboards] on usb-0000:04:00.3-2.4.1.2/input2
[282807.858786] hid-generic 0003:4250:426F.001E: hiddev3,hidraw7: USB HID v1.11 Device [SYK syk_keyboards] on usb-0000:04:00.3-2.4.1.2/input3
[282807.946641] usb 1-2.4.2: new high-speed USB device number 42 using xhci_hcd
[282808.026068] usb 1-2.4.2: New USB device found, idVendor=04b3, idProduct=4010, bcdDevice= 5.04
[282808.026085] usb 1-2.4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[282808.026092] usb 1-2.4.2: Product: Ethernet Gadget
[282808.026098] usb 1-2.4.2: Manufacturer: reMarkable
[282808.026104] usb 1-2.4.2: SerialNumber: 0
[282808.708752] cdc_ether 1-2.4.2:2.0 usb0: register 'cdc_ether' at usb-0000:04:00.3-2.4.2, CDC Ethernet Device, 7a:f3:09:cd:fa:03
[282808.708990] usbcore: registered new interface driver cdc_ether
[282808.721719] cdc_ether 1-2.4.2:2.0 enx7af309cdfa03: renamed from usb0
...
[282853.772618] usb 1-2.4.1.1: new high-speed USB device number 43 using xhci_hcd
[282853.850866] usb 1-2.4.1.1: New USB device found, idVendor=1d6b, idProduct=0104, bcdDevice= 5.04
[282853.850883] usb 1-2.4.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[282853.850891] usb 1-2.4.1.1: Product: Serial
[282853.850897] usb 1-2.4.1.1: Manufacturer: Allwinner Technology Inc.
[282854.538635] cdc_acm 1-2.4.1.1:1.0: ttyACM0: USB ACM device
[282854.538750] usbcore: registered new interface driver cdc_acm
[282854.538757] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Langage du code : JavaScript (javascript)
J’aimerai pouvoir développer des jeux avec, notament des jeux du genre memory, pour apprendre à lire ou du genre «taper sur la tête de la taupe».

Mais je voudrais que ça ne me prenne pas trop de temps. Idéalement il faudrait pouvoir l’utiliser sans connexion à un pc également.
Il y a un wiki (officiel ?): https://www.waveshare.com/wiki/MK20
Il y a beaucoup de chose qui sont en anglais, mais on tombe souvent sur du chinois également.
L’application qui permet de le configurer se nomme
Waveshare-ScreenKey. Elle est faite pour MacOS ou Windows (~700Mo) 🙁 Les sources semblent cependant disponibles.
Comment c’est dedans ?
Je n’ai pas trouvé le schéma électronique de l’appareil par contre j’ai une clef hexagonal et je peux le démonter.

On voit bien ici qu’il n’y a pas de DDR avec le processeur puisqu’elle est stackée dans le T113-S3.
Ethernet/Uart access
Au démarrage, le mk20 expose une interface ethernet que l’on peut même pinger :
[ +0,041893] cdc_ether 1-2.4.2:2.0 usb0: register 'cdc_ether' at usb-0000:04:00.3-2.4.2, CDC Ethernet Device, 7a:f3:09:cd:fa:03
[ +0,626138] cdc_ether 1-2.4.2:2.0 enx7af309cdfa03: renamed from usb0
$ sudo ip addr show enx7af309cdfa03
6: enx7af309cdfa03: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 7a:f3:09:cd:fa:03 brd ff:ff:ff:ff:ff:ff
inet 10.11.99.8/27 brd 10.11.99.31 scope global dynamic noprefixroute enx7af309cdfa03
valid_lft 60sec preferred_lft 60sec
inet6 fe80::5558:f5e7:3b3f:569a/64 scope link tentative noprefixroute
valid_lft forever preferred_lft forever
$ ping 10.11.99.8
PING 10.11.99.8 (10.11.99.8) 56(84) bytes of data.
64 bytes from 10.11.99.8: icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from 10.11.99.8: icmp_seq=2 ttl=64 time=0.026 ms
64 bytes from 10.11.99.8: icmp_seq=3 ttl=64 time=0.029 ms
64 bytes from 10.11.99.8: icmp_seq=4 ttl=64 time=0.078 ms
Langage du code : JavaScript (javascript)
Mais c’est une connexion à son propre ordinateur !
Interface qui disparait rapidement (~5 secondes) au profit d’une interface série:
[ +0,000249] cdc_ether 1-2.4.2:2.0 enx7af309cdfa03: unregister 'cdc_ether' usb-0000:04:00.3-2.4.2, CDC Ethernet Device
[nov.27 09:15] usb 1-2.4.1.1: new high-speed USB device number 48 using xhci_hcd
[ +0,079275] usb 1-2.4.1.1: New USB device found, idVendor=1d6b, idProduct=0104, bcdDevice= 5.04
[ +0,000017] usb 1-2.4.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0,000008] usb 1-2.4.1.1: Product: Serial
[ +0,000006] usb 1-2.4.1.1: Manufacturer: Allwinner Technology Inc.
[ +0,035256] cdc_acm 1-2.4.1.1:1.0: ttyACM0: USB ACM device
Langage du code : PHP (php)
Interface qui ne semble pas exposer de console shell si on s’y connecte en 115200:
2s 1 $ tio /dev/ttyACM0 -b 115200
[tio 09:20:56] tio v1.32
[tio 09:20:56] Press ctrl-t q to quit
[tio 09:20:56] Connected
Warning: Could not write to tty device
[tio 09:20:59] Disconnected
[tio 09:21:00] Connected
Le message de Warning de tio apparait lorsque l’on s’acharne sur le clavier pour essayer de taper quelque chose.
