This project bases on talks and articles by Andrzej Pietrasiewicz. Thanks for your work Andrzej!
"Make your own USB gadget" https://www.youtube.com/watch?v=ufzLQ4PSwW4
"Make Your Own USB Gadget" https://www.youtube.com/watch?v=ZO8PCwD-yg4
"Modern USB Gadget with Custom USB Functions & its Integration with systemd" https://www.youtube.com/watch?v=3aNlLec9YqY
"Modern USB Gadget with Custom USB Functions" https://www.youtube.com/watch?v=mQYh4xYG5a4
"Modern USB gadget on Linux & how to integrate it with systemd (Part 1)" https://www.collabora.com/news-and-blog/blog/2019/02/18/modern-usb-gadget-on-linux-and-how-to-integrate-it-with-systemd-part-1/
"Modern USB gadget on Linux & how to integrate it with systemd (Part 2)" https://www.collabora.com/news-and-blog/blog/2019/03/27/modern-usb-gadget-on-linux-and-how-to-integrate-it-with-systemd-part-2/
"Using dummy-hcd to play with USB gadgets" https://www.collabora.com/news-and-blog/blog/2019/06/24/using-dummy-hcd/
https://github.com/kopasiak/gt
How to build all tools could be found here: https://www.collabora.com/news-and-blog/blog/2019/06/24/using-dummy-hcd/