Un micrologiciel personnalisé enseigne de nouvelles astuces à la carte de relais USB
MaisonMaison > Nouvelles > Un micrologiciel personnalisé enseigne de nouvelles astuces à la carte de relais USB

Un micrologiciel personnalisé enseigne de nouvelles astuces à la carte de relais USB

Dec 14, 2023

Si vous cherchez un moyen simple et rapide de contrôler quelques appareils depuis votre ordinateur, une carte de relais USB bon marché pourrait être la solution idéale. Ce sont des gadgets assez simples, composés d'un peu plus qu'un microcontrôleur et d'une poignée de relais. Mais cela ne veut pas dire qu'il n'y a pas de place pour l'amélioration, et comme [Michał Słomkowski] l'a récemment démontré, flasher ces cartes avec un firmware personnalisé permet à l'utilisateur de modifier leur fonctionnalité par défaut.

Dans son cas, [Michał] voulait construire une barrette d'alimentation qui couperait l'alimentation de tous les appareils branchés dessus une fois son ordinateur en veille. Malheureusement, il ne pouvait pas simplement vérifier s'il y avait 5 V sur la ligne car sa carte mère maintenait les ports USB sous tension en permanence. Mais avec quelques modifications du micrologiciel de la carte relais, il a estimé qu'il devrait être en mesure de détecter s'il y avait une activité USB en surveillant le paquet de début de trame qui sort toutes les millisecondes lorsque le bus est actif.

Maintenant [Michał] ne prétend pas être la première personne à proposer un firmware personnalisé pour l'une de ces cartes, en fait, il attribue à un projet de firmware open source existant une source d'inspiration pour son travail. Mais il a créé un tout nouveau micrologiciel GPLv3 pour ces appareils alimentés par ATtiny45, qui inclut, entre autres améliorations, la dernière version de V-USB. Il se trouve que V-USB inclut la détection de paquet de début de trame prête à l'emploi, ce qui a beaucoup facilité la mise en œuvre de son code de détection d'activité.

Avec le nouveau micrologiciel flashé sur la puce de la carte relais, [Michał] l'a placé dans un boîtier et a câblé les prises. Mais il manquait encore une pièce du puzzle. Il semble que Linux n'enverra pas réellement les paquets de début de trame à moins qu'il ne communique activement avec un périphérique USB, dans le cadre de la fonction d'économie d'énergie dite de "suspension sélective". Heureusement, il existe un support pour désactiver cette fonctionnalité pour des appareils spécifiques en fonction de leur paire d'ID fournisseur/produit, donc après un peu de bricolage udev, tout fonctionnait comme prévu.

Nous aimons les projets de micrologiciels personnalisés ici à Hackaday. Non seulement ils empêchent les logiciels propriétaires d'accéder à nos appareils, mais ils débloquent souvent des fonctionnalités nouvelles et étendues qui, autrement, seraient cachées derrière des murs de paiement artificiels.