Codeless KEXT pour empêcher macos de "capturer" un appareil usb,
ce qui empêche ensuite de réclamer (claim
) l'interface pour dialoguer avec.
Pour pouvoir l'utiliser dans les version récentes de macos (10.09+), il faut que le driver soit signé par un compte "Mac Developer" officiel :'( mais à partir de macos 10.11, on peut désactiver le System Integrity Protection pour le tester.
Ici on veut interagir avec une montre TomTom Runner 3. Il faut d'abord chercher les "bonnes valeurs" pour matcher l'appareil :
$ lsusb -v
...
TomTom GPS Watch:
Product ID: 0x7477 <-- besoin de ça
Vendor ID: 0x1390 <-- et de ça
Version: 1.00
Serial Number: HR3366G02563
Speed: Up to 480 Mb/sec
Manufacturer: TomTom
Location ID: 0xfa130000 / 5
Current Available (mA): 500
Current Required (mA): 100
Extra Operating Current (mA): 0
On aura aussi besoin de bdcDevice
(256), bConfigurationValue
(1) et bInterfaceNumber
(0) obtenus par programme ^^
Le driver doit être copié dans /System/Library/Extensions
et appartenir à root:wheel
. Ensuite, il faut le charger :
$ kextutil -v -t xxx.kext
Les drivers non signés afficheront les lignes :
Kext with invalid signatured (-67050) allowed: <OSKext 0x7fa489c1a190 [0x7fff8e6faa80]> { ...}
Code Signing Failure: code signature is invalid
mais se chargeront quand même ;-)
Successfully loaded /System/Library/Extensions/runner3-kext.kext.
/System/Library/Extensions/runner3-kext.kext successfully loaded (or already loaded).