USB licence device sharing over networks : Development of a VirtualHere and Raspberry Pi based system
Ahlsved, Carl-Oscar (2023)
Ahlsved, Carl-Oscar
2023
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2023060923228
https://urn.fi/URN:NBN:fi:amk-2023060923228
Tiivistelmä
The aim of this thesis was improving an existing VirtualHere-based system running on Raspberry Pi used for sharing USB license devices over networks in Swedish audio post-production company LjudBang. The original system had several shortcomings, including an inability to detect disconnected USB devices, hard-coded settings in the code, and limited user interaction possibilities. While all issues were addressed, the most significant were detection and automatic power cycling of disconnected USB devices as well as providing a means of user interaction.
First, the original system and proposed system is presented. Then background information about USB, followed by a description of the key software components used. Furthermore, considerations related to selecting USB hubs with per-port power switching used for power cycling of devices are addressed. Lastly, the developed system is presented with additional details regarding the enclosure used for the completed system.
The original system was developed using BASH scripts, which were replaced with Python and hard-coded settings were separated into JSON files. The system now incorporates the ability to detect disconnected devices, automatically power cycle them, log the event, and send email alerts to an administrator. The power cycling mechanism utilizes USB hub per-port power switching, replacing the mechanical relays used in the old system. For user interaction, a web interface was developed using Node.js and React, enabling editing of USB device configurations as well as providing means for system reboot and shutdown. Finally, the components were housed in a suitable enclosure for practical deployment.
While the system meets initial requirements, further field testing is still needed. In addition, some features are still under development. Log viewing through the web interface and adding a user database for login functionality are examples of areas requiring further improvement. Other development suggestions include enhancing device logging for better insights into device usage.
First, the original system and proposed system is presented. Then background information about USB, followed by a description of the key software components used. Furthermore, considerations related to selecting USB hubs with per-port power switching used for power cycling of devices are addressed. Lastly, the developed system is presented with additional details regarding the enclosure used for the completed system.
The original system was developed using BASH scripts, which were replaced with Python and hard-coded settings were separated into JSON files. The system now incorporates the ability to detect disconnected devices, automatically power cycle them, log the event, and send email alerts to an administrator. The power cycling mechanism utilizes USB hub per-port power switching, replacing the mechanical relays used in the old system. For user interaction, a web interface was developed using Node.js and React, enabling editing of USB device configurations as well as providing means for system reboot and shutdown. Finally, the components were housed in a suitable enclosure for practical deployment.
While the system meets initial requirements, further field testing is still needed. In addition, some features are still under development. Log viewing through the web interface and adding a user database for login functionality are examples of areas requiring further improvement. Other development suggestions include enhancing device logging for better insights into device usage.