Je sais que ce post est assez ancien mais je suis tombé dessus alors que je cherchais une solution pour le même problème. Je n'ai pas vu de solution toute faite que l'on peut acheter, mais plusieurs approches de type do it yourself (DIY).
Ces approches DIY sont donc toutes basées sur la construction de votre propre "adaptateur". L'adaptateur est un ordinateur basé sur Linux, par exemple un ordinateur monocarte (SBC) tel que le Raspberry Pi. Il fait office de périphérique de stockage de masse USB ("lecteur flash") pour votre smart TV d'une part et accède (en lecture et en écriture) à un stockage de données en réseau (NAS) d'autre part.
iSCSI via Mass Storage
TCP/IP via Device Class via
[NAS] ————— Ethernet or Wi-Fi ———— [Linux computer] ———————— USB ————————— [Smart TV]
Matt Olan s'est rendu compte de cette approche plus tôt cette année lorsqu'il a essayé de stocker des jeux et des sauvegardes de sa PlayStation 4 : https://matt.olan.me/making-a-piscsi-usb-drive-part-1/ y https://matt.olan.me/making-a-piscsi-usb-drive-part-2/ - il a également effectué des mesures de performance.
Démarrage de l'installation du système d'exploitation (OS) Linux sur le SBC
Si vous utilisez un SBC basé sur un Raspberry Pi, vous devriez commencer par une installation Linux. La version actuelle de la Système d'exploitation Raspberry Pi (précédemment appelé Raspbian ) peut être téléchargé à partir de https://www.raspberrypi.org/software/ .
Vous pouvez alors également suivre le guide sur https://www.raspberrypi.org/documentation/configuration/wireless/headless.md pour configurer votre Raspberry Pi sans tête, c'est-à-dire que vous pouvez déjà modifier le contenu (le dossier de démarrage) de la carte SD. Vous pouvez également commencer avec SSH activé (en créant un nouveau fichier vide nommé ssh
dans le répertoire de démarrage). Utilisez ensuite raspi-config
pour modifier d'autres paramètres.
Fournir un périphérique de stockage de masse à votre téléviseur intelligent
En général, un ordinateur fait office d'hôte USB. Ce dont nous avons besoin ici, c'est d'un ordinateur agissant comme un périphérique USB esclave. Le matériel de l'ordinateur doit fournir un USB On-The-Go (OTG) port. Dans le langage Linux, ce type de système est également appelé un Gadget USB . Vous devrez modifier votre installation Linux.
Le pilote USB dwc2
doit être utilisé dans /boot/config.txt
y /etc/modules
.
El "Gadget de stockage de masse" (MSG) est utilisé ici. Il "fournit un support pour la classe USB Mass Storage. Il peut apparaître à un hôte comme un ensemble de 8 unités de disque SCSI (appelées unités logiques, souvent appelées LUN, bien qu'il s'agisse techniquement du numéro d'unité logique), bien que la plupart du temps, un seul LUN soit suffisant. Les informations stockées pour chaque LUN doivent être conservées par le gadget quelque part, soit dans un fichier normal, soit dans un périphérique de bloc tel qu'une partition de disque ou même un ramdisk. Ce fichier ou périphérique bloc est appelé le support de stockage pour le gadget (...)." _(source : http://www.linux-usb.org/gadget/file_storage.html )_
Le module g_mass_storage
est chargé via modprobe
pointant vers ce stockage de secours :
sudo modprobe g_mass_storage file=/dev/sd... stall=0
Nous utiliserons un périphérique de bloc tel que fourni via iSCSI, voir ci-dessous.
(Il y a aussi un article sympa sur le fait de faire du Pi Zero W uniquement une clé USB, donc sans la connexion au NAS de l'autre côté. Certaines parties s'appliquent toujours à notre scénario : https://magpi.raspberrypi.org/articles/pi-zero-w-smart-usb-flash-drive - Conseil : si vous adoptez cette approche, assurez-vous que votre fichier conteneur est suffisamment grand pour votre Smart TV. Je viens de découvrir que mon téléviseur LG n'accepte que les clés USB d'une capacité d'au moins 4 GBytes).
Accéder à votre NAS
Limitation : Vous ne pouvez pas fournir directement l'accès à un répertoire partagé dans le réseau en tant que support de stockage pour le gadget. Le protocole de communication sous-jacent de votre NAS est souvent Bloc de messages du serveur ( SMB ) ou Système de fichiers Internet commun ( CIFS ) ou Système de fichiers en réseau ( NFS ).
"Le module g_mass_storage a besoin d'un périphérique bloc ou d'un fichier plat, la plupart des partages réseau ne sont ni l'un ni l'autre." (source : https://www.raspberrypi.org/forums/viewtopic.php?t=220468 )
Au lieu de cela, il exige que votre NAS fournisse un iSCSI Internet Small Computer Systems Interface, "une norme de réseau de stockage basée sur le protocole Internet (IP) pour relier les installations de stockage de données. Elle fournit accès aux périphériques de stockage au niveau du bloc en transportant les commandes SCSI sur un réseau TCP/IP. iSCSI est utilisé pour faciliter les transferts de données sur les intranets (...)". (source : https://en.wikipedia.org/wiki/ISCSI )
Comme il est basé sur les réseaux TCP/IP, il est fondamentalement indépendant de la couche de liaison sous-jacente, c'est-à-dire que vous devriez pouvoir y accéder aussi bien via une connexion Ethernet filaire que via le Wi-Fi sans fil. Cela dépend de votre configuration locale. Gardez à l'esprit que le débit via Ethernet devrait être plus élevé.
Vous devez demander au manuel d'utilisation de votre NAS comment l'activer en tant que cible iSCSI.
Sur le SBC fonctionnant sous Linux, vous devez effectuer quelques étapes supplémentaires pour initier une connexion iSCSI à votre NAS. Matt Olan donne une description très intéressante dans la section "Méthode" de son site Web. https://matt.olan.me/making-a-piscsi-usb-drive-part-1/ - il décrit également les étapes précédentes de la configuration du gadget de stockage de masse, comme indiqué ci-dessus.
Conseils pour le choix du matériel
- Certains des SBC Raspberry Pi connectent leur USB à un hub USB ou relient la broche d'identification de l'USB de façon permanente à la terre sur leurs cartes de circuit imprimé. Cela ne les rend pas utilisables comme périphérique USB esclave via USB OTG.
- En fonction de votre SBC, vous ne pouvez disposer que du Wi-Fi. o Connectivité Ethernet.
- Vous pouvez choisir une carte SBC avec USB 3.0 OTG pour obtenir des débits de données plus élevés. Assurez-vous que le terme "super-speed" est utilisé et non "high-speed" uniquement.
- Le Raspberry Pi Zero W et le Raspberri Pi 4 Model B semblent fonctionner (sans garantie).
- Matt Olan a d'abord utilisé un Raspberry Pi Zero W (USB 2.0 OTG, WiFi) puis un RockPi 4b (USB 3.0 OTG).
Autre méthode sans support iSCSI
Si votre NAS ne fournit pas d'iSCSI, une approche différente peut être adoptée. Les fichiers sur le NAS sont accessibles via SMB.
SMB or NFS or … via Mass Storage
usually TCP/IP via Device Class via
[NAS] ————— Ethernet or Wi-Fi ———— [Linux computer] ———————— USB ————————— [Smart TV]
Mais, comme mentionné précédemment, l'accès SMB n'est pas supporté avec g_mass_storage
et c'est pourquoi nous devons prendre une solution de rechange :
- un stockage de sauvegarde sur l'adaptateur est créé et fourni à la Smart TV (hôte USB)
- il doit être créé en tant que fichier avec un système de fichiers à l'intérieur.
- Pour ce faire, on utilise
dd
, fdisk
y mkdosfs
(pour le partitionnement et la création d'un système de fichiers FAT32 ; les paramètres tels que les secteurs et les cylindres doivent être choisis pour correspondre à l'architecture de l'entreprise) g_mass_storage
et votre fichier)
- sur le gadget peut être effectué en utilisant le pilote de périphérique loop pour mapper la partition avec le stockage de sauvegarde, puis la monter (
mount -t vfat
)
- l'accès exclusif mutuel au stockage de sauvegarde : il ne peut être accédé que par l'hôte USB ou l'adaptateur lui-même à la fois : "Un seul système (normalement, l'hôte USB) peut écrire sur le stockage de sauvegarde, et si un système écrit ces données, aucun autre ne doit les lire." _(source : http://www.linux-usb.org/gadget/file_storage.html )_
- Par conséquent, les données doivent être copiées entre l'adaptateur et le NAS :
- par exemple, de l'adaptateur au NAS après l'enregistrement d'une vidéo.
- par exemple, du NAS vers l'adaptateur avant de regarder un film enregistré à partir de l'adaptateur.
- Vous trouverez de plus amples informations et des instructions ici : http://www.linux-usb.org/gadget/file_storage.html (anglais), https://raspberrypi.stackexchange.com/questions/112957/mount-smb-share-as-file (anglais) et https://forum-raspberrypi.de/forum/thread/36132-usb-gadget-mass-storage-emulation/ (Allemand)
L'inconvénient de cette approche est que vous devez synchroniser/planifier les accès au stockage de secours. La copie des données de A à B et vice versa prendra un certain temps et vous aurez besoin d'étapes supplémentaires pour automatiser cette opération.
Autres tentatives
- Je ne me souviens pas de la référence mais l'approche mentionnée ci-dessus semble nécessiter une version du noyau Linux >= 4.4.
- Si votre Smart TV prend en charge le protocole de transfert de médias (MTP), vous pouvez adopter une approche différente.
- Matt Olan a mentionné que certains "fabricants de NAS tels que QNAP offrent un support pour le stockage USB direct".
- J'ai lu de courts résumés sur le système de fichiers VFAT virtuel de QEMU (vvfat), mais je ne suis pas sûr qu'il puisse être appliqué dans ce scénario.