Description
Pour une raison quelconque, j’aime les petits ordinateurs portables et les contraintes qu’ils imposent (tant qu’ils sont encore utilisables). J’ai utilisé un Dell Mini 9 pendant des jours et j’utilisais jusqu’à récemment un MacBook Air 11" comme principale machine de développement, et ce pendant de nombreuses années. Récemment, Microsoft a annoncé une version plus petite et moins chère de ses tablettes Surface, appelées Surface Go, qui ont éveillé mon intérêt.
Matériel
La Surface Go est disponible dans deux configurations matérielles :
- une avec 4 Go de RAM et un disque eMMC de 64 Go,
- et une autre avec 8 Go de RAM avec un disque SSD NVMe de 128 Go. (J’ai pris cette dernière).
Les deux sont livrées avec un processeur Intel Pentium Gold 4415Y qui n’est pas très rapide, mais reste certainement utilisable.
La tablette mesure 23,5 cm de long, ~ 17.5 cm de large, ~ 0.8 cm d’épaisseur. Elle a un écran tactile de 10" de diagonale (3:2), recouvert d’un Gorilla Glass et une résolution de 1800x1200. Le pourtour est assez large, spécialement pour un si petit écran, mais cela a du sens sur un périphérique qui est destiné à être tenu, pour éviter les appuis accidentels sur l’écran.
Le clavier et le pavé tactile sont situés sur une dalle amovible distincte, appelée Surface Signature Type Cover, vendue séparément. J’ai opté pour la couverture “bleu de cobalt” qui contient un matériau en alcantara doux, semblable à un tissu. Le couvercle se fixe magnétiquement le long du bord inférieur de l’appareil et présente des claviers et des pavés tactiles reliés par USB. Lorsque le capot est replié contre l’écran, il envoie un signal de veille ACPI et est maintenu magnétiquement sur l’écran. En utilisation normale, le couvercle peut être placé à plat sur une surface ou légèrement relevé d’environ 3/4, près de l’écran pour une meilleure ergonomie. Lorsque vous utilisez l’appareil comme une tablette, vous pouvez faire pivoter le couvercle derrière ce qui arrête automatiquement l’envoi des événements clavier et pavé tactile jusqu’à ce qu’il soit à nouveau retourné.
Le clavier a une bonne quantité de touches et une bonne disposition, avec Home / Fin / Page Up / Page Down accessible via Fn + Gauche / Droite / Haut / Bas, mais aussi les touches Home / Fin / Page Up / Page Down dédiées. Je trouve les touches F9 à F12 assez utiles puisque la disposition du clavier est un peu petite. Par défaut, les touches F1 à F12 n’envoient pas les codes de touches F1-F12, la touche Fn doit être utilisée, soit enfoncée temporairement , soit appuyée pour activer le verrouillage Fn. Les touches sont rétroéclairées avec trois niveaux de réglage, gérés par le clavier lui-même avec la touche F7.
Le pavé tactile du Type Cover est un pavé tactile Windows Precision connecté via USB HID. Il a un clic décent, mais lorsque la couverture est inclinée au lieu d’être plate sur une surface, cela sonne un peu creux et bon marché.
L’écran tactile est alimenté par une puce Elantech connectée via HID-over-i2c, qui prend également en charge la saisie au stylet. Un stylet Surface Pen est disponible séparément auprès de Microsoft et est disponible dans les mêmes couleurs que les dalles amovibles “Type Covers”. Le stylet fonctionne sans aucun appairage, bien que le bouton supérieur fonctionne en Bluetooth, il faut donc l’appairer pour l’utiliser. Dans tous les cas, le stylet nécessite une pile AAAA pour fonctionner. Le stylet peut être fixé magnétiquement sur le côté gauche de l’écran lorsqu’il n’est pas utilisé.
Une béquille peut basculer derrière l’écran pour utiliser la tablette dans un format de portable pouvant s’ajuster à n’importe quel angle jusqu’à environ 170 degrés. La béquille reste fermement en place partout où elle est positionnée, ce qui signifie également qu’elle nécessite un peu de force pour la sortir lors de la première mise en place de la Surface Go sur un bureau.
En haut de l’écran, vous trouverez un bouton d’alimentation et des boutons à bascule pour le volume du son. Sur le côté droit se trouvent la prise casque 3,5 mm, le port USB-C, le port d’alimentation et le logement pour carte microSD située derrière la béquille.
La charge peut être effectuée via le port USB-C ou le port de charge dédié, qui accueille une fixation magnétique similaire à l’adaptateur MagSafe de première génération d’Apple. Le câble de charge a une LED blanche qui brille quand il est connecté, ce qui est assez ennuyeux car il est près de la ligne médiane de l’écran plutôt que vers le bas du clavier. Contrairement au MagSafe d’Apple, le voyant n’indique pas si la batterie est chargée ou non. La prise du chargeur électrique peut être placée vers le haut ou le bas, mais dans les deux sens, je trouve que le câble d’alimentation qui en sort est soumis à une contrainte gênante en raison de la position verticale du port.
La connectivité sans fil est assurée par une puce Qualcomm Atheros QCA6174 802.11ac qui fournit également une connectivité Bluetooth.
La plupart des capteurs de l’appareil, tels que le gyroscope et le capteur de lumière ambiante, sont connectés derrière un périphérique PCI Intel Sensor Hub, ce qui permet de réaliser des économies d’énergie car le processeur hôte n’a pas à interroger les capteurs en permanence.
Firmware
Pour accéder au menu BIOS ou micrologiciel de la Surface Go, maintenez le bouton Volume Haut enfoncé, puis appuyez sur le bouton Marche / Arrêt et relâchez-le, puis relâchez la touche Volume Up lorsque le menu apparaît. Secure Boot ainsi que divers composants matériels peuvent être désactivés dans ce menu. L’ordre de démarrage peut également être ajusté. Un menu de démarrage temporaire peut être affiché de la même manière, mais en utilisant plutôt Volume Down.
Installer OpenBSD
L’installation était très facile, le clavier “Type Cover” fonctionnant immédiatement, la plupart du matériel étant des composants PC standard.
Pour démarrer l’installateur d’OpenBSD, utilisez dd
pour installer
l’image install64.fs
sur un disque USB ; entrez dans le BIOS comme
indiqué ci-dessus et désactivez “Secure Boot”, puis définissez le
périphérique USB comme priorité de démarrage.
Lorsque vous partitionnez le SSD de 128 Go, vous pouvez supprimer en toute sécurité la partition Windows Recovery qui occupe 1 Go, car elle ne peut pas réparer une partition Windows totalement supprimée et une image de récupération complète peut être téléchargée du site Web Microsoft et copiée sur un disque USB.
Après avoir installé OpenBSD mais avant de redémarrer, montez la
partition EFI ( sd0i
) et supprimez le répertoire /EFI/Microsoft
.
Sans cela, la tablette peut essayer de démarrer le chargeur de
récupération Windows. Le chargeur de démarrage EFI d’OpenBSD
/EFI/Boot/BOOTX64.EFI
sera chargé par défaut.
Un inconvénient à noter : si vous appuyez sur le pavé tactile ou si vous appuyez sur les touches F1 à F6 lors de l’installation, le “Type Cover” détachera tous ses périphériques USB, puis les ré-activera. Cela est dû au fait que le ramdisk ne contient aucun pilote de pavé tactile ou autre périphérique prenant en charge les contrôles de consommation USB HID pour les touches F1-F6. Par conséquent, les canaux USB de ces périphériques ne sont pas fonctionnels. Il est probable que le “Type Cover” se redémarre dans cette situation en tant que sécurité intégrée pour le forcer à se rattacher, plutôt que de demander à l’utilisateur de détacher le capot et de le rattacher.
Cela ne se produira pas pour le pavé tactile une fois que le noyau
normal sera démarré car il contient le pilote umt
. Lisez mes remarques
ci-dessous pour utiliser usbhidcontrol
afin de répondre aux touches
F1-F6 qui maintiendront le bon canal USB ouvert afin d’empêcher le
détachement ou la réinstallation lors de l’utilisation de ces touches.
Journal de support OpenBSD
23-08-2018 : J’ai reçu la Surface Go et j’ai démarré un disque USB
OpenBSD après avoir désactivé Secure Boot. J’ai pu installer OpenBSD à
la place de la partition Windows, en conservant la partition de
récupération Windows. Après le redémarrage, la Surface a continué
d’essayer de démarrer Windows Recovery, qui échouait encore et encore.
J’ai démarré sur une installation USB Windows et j’ai pu utiliser
EasyUEFI pour ajouter une nouvelle option
de démarrage UEFI et démarrer explicitement le BOOTX64.EFI
d’OpenBSD.
OpenBSD démarre maintenant par défaut.
J’ai remarqué que l’écran avait un pixel mort dans le coin inférieur gauche, alors j’ai décidé de l’apporter au Microsoft Store proche pour un échange. Mais avant, je devais réinstaller Windows, ce qui a pris plusieurs heures, car la partition de récupération Windows ne peut actuellement rien récupérer si la partition Windows a été effacée. J’ai téléchargé une image de récupération de la Surface à partir du site Web de Microsoft et créer un disque USB pour réinstaller Windows. Finalement, je me suis rendu au Microsoft Store et ils m’ont rapidement donné une nouvelle en échange.
Lors de l’installation d’OpenBSD sur le nouveau périphérique, j’ai
décidé d’effacer la partition de récupération de Windows car elle est de
toute façon inutile et me permettrait d’économiser un gigaoctet d’espace
supplémentaire. Avant de redémarrer, j’ai compris que les variables de
démarrage UEFI pointaient d’abord vers les fichiers EFI de récupération
de Windows dans \EFI\Microsoft
. J’ai donc supprimé tout ce répertoire
en laissant \EFI\Boot\BOOTX64.EFI
qui est le chargeur de démarrage
d’OpenBSD. Cela a fonctionné comme prévu et OpenBSD démarre maintenant
par défaut.
24-08-2018 : Le pavé tactile du Type Cover se connecte à ums
mais
c’est un pavé tactile Windows Precision qui devrait donc fonctionner
comme mon pilote imt
, mais via USB. ums
ne prend en charge qu’un
seul doigt de saisie et le matériel a la fonction “tap-to-click” activée
par défaut, il ne peut pas être désactivé. J’ai écrit un nouveau pilote
umt
pour le brancher sur USB à la place de hidmt
, ensuite j’ai perdu
beaucoup de temps pour déboguer les raisons pour lesquelles le
périphérique ne fonctionnait pas correctement dans le mode PTP. Je l’ai
traqué jusqu’à trouver une certaine confusion entre ihidev
et hidmt
qui devait être corrigés en premier, j’ai donc envoyé un diff à tech@
.
25-08-2018 : J’ai envoyé
les modifications des pilotes ihidev
et hidmt
et un
diff pour importer umt
à tech@
pour analyse. Il a été rapidement
importé .
28-08-2018 : Ces deux derniers jours, j’ai passé du temps à chercher
ce qui était nécessaire pour que l’écran tactile Elan fonctionne. Il
s’attache à ihidev
en tant que périphérique HID-over-i2c, mais il ne
s’attache pas à imt
. Finalement, j’ai découvert que ce n’est pas un
périphérique compatible PTP, mais conforme à l’ancien multitouch de type
Windows 8. J’ai commencé à ajouter
un support pour ces périphériques de type Windows 8 à hidmt
et déplacé
du code dupliqué dans umt
et imt
dans hidmt
.
J’ai aussi examiné les boutons de volume en haut de l’écran.
Malheureusement, ils ne fonctionnent pas avec notre pilote
acpisurface
existant, alors
j’ai démarré un disque USB Linux et ai tracé leur fonctionnement.
Apparemment, c’est un périphérique “Intel 5-button Array” qui fonctionne
via ACPI. J’ai écrit un nouveau pilote
acpihid
pour cela et les boutons de volume contrôlent maintenant le volume audio.
Il y a certaines surcharges dans acpihid
, dans la gestion du bouton
d’alimentation et de la méthode d’interruption ACPI GPE standard, afin
de recevoir la pression sur le bouton d’alimentation. J’ai donc dû prendre
en compte que acpibtn
capture acpihid
s’il est attaché. Ce serait
bien s’il y avait une variable sysctl
comme machdep.lidaction
qui
spécifiait si le bouton d’alimentation était en mode arrêt, suspendu ou
ne faisait rien.
29-08-2018 : Je voulais faire fonctionner les fonctions F1
à F6 du clavier (luminosité, lecture / pause, sourdine,
diminution / augmentation du volume) sur le Type Cover. Actuellement,
chaque fois qu’ils sont pressés, le Type Cover redémarre, car le
rétro-éclairage s’éteint et tous ses périphériques USB se détachent puis
se reconnectent. En traçant comment cela fonctionne sous Linux, j’ai vu
qu’il s’agissait essentiellement d’utiliser leur pilote générique
hid-input
, donc il ne devrait pas avoir besoin de le personnaliser.
J’ai commencé à travailler sur un pilote générique d’entrée USB HID
(contrairement à ukbd
/ hidkbd
qui nécessite des utilisations
spécifiques au clavier), mais j’ai eu des soucis sur
usbhidaction
que nous avons
déjà en base et qui devrait bien fonctionner pour cette tâche.
Malheureusement, usbhidaction
requiert de connaître le chemin
spécifique uhid du périphérique HID qui doit être contrôlé et le quitter
dès que le périphérique disparaît. Pour la dalle Type Cover de la Surface,
ce périphérique peut changer en fonction de ce qui a été branché au
démarrage, et se détachera à chaque fois que la machine sera arrêtée
alors usbhidaction
s’arrêtera simplement.
Après avoir passé beaucoup de temps à modifier usbhidaction
pour
interroger le périphérique /dev/usbN
afin d’attendre les ajouts et les
suppressions de périphérique, j’ai réalisé que la page de manuel était
obsolète et que tous ces événements étaient sortis du noyau il y a
plusieurs années. J’ai
enlevé
cette ligne dans la page de manuel.
30-08-2018 : Afin d’être capable d’utiliser usbhidaction
pour
qu’il trouve automatiquement un périphérique USB en fonction de son
fournisseur et de son identifiant, et être capable d’attendre que le
périphérique s’affiche automatiquement, je l’ai connecté à
/dev/hotplug
. Malheureusement,
hotplug ne prend en charge qu’un seul lecteur simultané. J’ai donc
implémenté le clonage de périphérique
dans le pilote hotplug
afin que plusieurs processus puissent lire à
partir de /dev/hotplug
et que chacun reçoive sa propre file d’événements.
Je l’ai envoyé par courrier électronique à la liste des développeurs
OpenBSD et j’ai reçu quelques premiers commentaires à ce sujet.
J’ai fait beaucoup de progrès sur les changements d’ usbhidaction
, et
je les ai envoyés
dans mon arborescence.
J’ai également envoyé
un changement en amont pour créer 8 périphériques /dev/uhidN
,
puisqu’il n’y en avait que 4 auparavant.
31-08-2018 : J’ai décidé d’abandonner mon support multitouch Windows
8 pour le moment, car l’écran tactile devrait être utilisable avec le
support de base par ims
(agissant comme une souris à un bouton).
Utiliser imt
signifiait de réclamer tous les rapports HID (25 !) sur
le périphérique, ce qui brisait la prise en charge de l’utilisation d’un
stylet et mon stylet Surface est arrivé, je voulais l’utiliser. De cette
façon, ims
peut juste l’attacher au rapport de l’écran tactile et un
autre ims
peut l’attacher au rapport de saisie du stylet.
En faisant des ims
correspondant aux rapports de l’écran tactile, je
suis tombé sur ce qui ressemble à un bogue dans notre analyseur HID (ou,
il n’est tout simplement pas pris en charge) où il correspondait à
l’utilisation de pages qu’il ne devrait pas. Le résultat de ceci était
que, quand hidms
cherchait la page d’utilisation indiquant le minimum
logique et le maximum X / Y de l’écran (afin de pouvoir mapper les
coordonnées d’entrée de l’écran tactile sur l’affichage de l’écran), il
y avait des utilisations pour d’autres choses sans rapport, cela faisait
penser au pilote que l’écran était beaucoup plus grand qu’il ne l’était.
Lorsque je touchais l’écran et que je le parcourais complètement, cela
ne faisait déplacer le curseur que d’un quart environ.
J’ai envoyé un diff
à tech@
pour contourner cet ims et attacher des ims
aux écrans tactiles.
01-09-2018 : Les diff d’hidms
et d’ims
ont été acceptés. OpenBSD 6.4 prendra en charge l’écran tactile, le
stylet, le clavier et le pavé tactile multitouch.
Je suis toujours en attente de retours sur mon changement de hotplug
,
ce qui me permettra ensuite de développer plus profondément mes
modifications sur usbhidaction
.
J’ai aussi besoin de commencer à travailler sur un pilote pour le périphérique PCI Intel Sensor Hub qui me permettrait ensuite de prendre en charge le capteur de lumière ambiante et le gyroscope pour la détection de la rotation. Cependant, en regardant le pilote Linux, il semble qu’il y ait une tonne de code et bien sûr, il n’y a pas de documentation ouverte pour que je puisse trouver.
Résumé du support actuel d’OpenBSD
Le statut est relatif à OpenBSD-current en date du 03-09- 2018.
Composant | Fonctionnel | Remarques |
---|---|---|
Adaptateur électrique AC | Oui | Pris en charge via acpiac et le statut est disponible via apm et hw.sensors , qui supporte également la charge via USB-C. |
Détecteur de lumière ambiante | Non | Connecté derrière un périphérique PCI Intel Sensor Hub qui nécessite un nouveau pilote. |
Audio | Oui | Audio HDA avec un codec Realtek 298 pris en charge par azalia . |
État de la batterie | Oui | Pris en charge via acpibat et le status est disponible via apm et hw.sensors . |
Bluetooth | Non | Le périphérique Atheros apparaît comme un périphérique ugen , mais OpenBSD ne prend pas en charge le Bluetooth. Peut être désactivé dans le BIOS. |
Les caméras | Non | Il existe apparemment des caméras avant, arrière et infrarouge, dont aucune n’est prise en charge (ni souhaité). Peut être désactivées dans le BIOS. |
Le Gyroscope | Non | Connecté derrière le périphérique PCI Intel Sensor Hub qui requiert un nouveau pilote qui pourrait alimenter le [[https://man.openbsd.org/man9/sensor_attach.9 |
Hibernation | Oui | Fonctionne bien avec zzz |
Slot MicroSD | Oui | Un Realtek RTS522A, supporté par rtsx . |
Le SSD | Oui | Le périphérique Toshiba NVMe accessible via nvme . |
Le stylet | Oui | Fonctionne sur l’écran tactile via ims . Le bouton situé en haut du stylet nécessite la prise en charge du Bluetooth qui n’est pas pris en charge. Du fait que dwiic nécessite toujours l’interrogation de ces chipsets, dessiner avec le stylet n’est pas aussi fluide qu’avec des interruptions correctes. |
Mise en veille / Réveil | Oui | Fonctionne bien à partir de zzz et en fermant le Type Cover contre l’écran. Il ne se réveille pas automatiquement lorsque vous retirez le Type Cover, il faut appuyer sur le bouton d’alimentation pour le réveiller. |
L’Écran tactile | Oui | HID-over-I2C, supporté par ims . |
Le clavier Type Cover | Oui | USB, supporté par ukbd . 3 niveaux de contrôle du rétroéclairage sont réglables par le clavier lui-même avec F7. Les actions des touches F1 à F6 apparaissent dans le rapport 3 et peuvent être répondues avec usbhidaction -u 045e:096f -r 3 . |
Le pavé tactile Type Cover | Oui | USB, pris en charge par mon nouveau pilote umt pour le multitouch à 5 doigts, le défilement à deux doigts, l’hystérésis et être capable de désactiver le tap-to-click qui est activé par défaut en mode souris normal. |
USB | Oui | Le port USB-C fonctionne bien pour les données et la charge. |
La Vidéo | Oui | inteldrm a pris en charge Kaby Lake en ajoutant la vidéo accélérée, le DPMS, le contrôle gamma, le contrôle de rétroéclairage intégré et la reprise S3 appropriée. |
Les boutons de volume | Oui | Intel à 5 boutons, pris en charge par mon nouveau pilote acpihid non encore importé en amont. |
Wifi | Non | Puce sans fil Qualcomm Atheros QCA6174 802.11ac, non prise en charge. FreeBSD a un port en cours de travail d’ath10k partir de Linux (sous licence ISC) qui peut être porté. J’utilise actuellement un petit adaptateur sans fil USB-A qui est rendu moins volumineux par un adaptateur USB-A vers USB-C. |
Remerciements
Avec l’aimable autorisation de Joshua Stein !
Cette page est la traduction de la page [OpenBSD on Microsoft Surface Go]]]1 du site BSDHowto.ch.
Historique
J’ai écrit historiquement cette traduction sur le wiki de la communauté “OpenBSD Pour Tous”.