2
\$\begingroup\$

I am trying to create a keyboard without the physical ICs and other components (I have some components, but not all) as a training exercise to practice HID among other things.

I was wondering if there is a way to use Proteus as a virtual USB device connected to a physical machine (the hosting computer or another computer in the network or linked with a host computer via a male-to-male USB cable).

Can that be done? If so, what do I need other than Proteus and how do I make that happen?

My operating system is Windows 11.

\$\endgroup\$
3
  • 4
    \$\begingroup\$ Dont even think about using a male to male USB A cable. Bad things can happen! I think most laptops and dektops only support host mode. Would you be open to using a dev board such an Arduino? \$\endgroup\$
    – Anas Malas
    Oct 18, 2022 at 7:33
  • \$\begingroup\$ @AnasMalas I've already created a HID device (keyboard) using an arduino. And I can do the same with the STMicro Blue pill I believe. The thing is Arduino isn't baremetal (there is a bootloader shipped with it). What I would be open to is something inside Proteus that allows me to test if any chip I am using for my test can simulate a HID Device. It would love it if I could use a physical computer for that but the next best thing is OK as well : either a virtual computer (virtual machine) or a way to see that the signal sent by the virtual HID Device are the ones I want them to send. \$\endgroup\$
    – Paiku Han
    Oct 19, 2022 at 8:28
  • 1
    \$\begingroup\$ @PaikuHan It is really easy to remove the Arduino bootloader or simply to remove the delay caused by it, as long as you have an external programmer (could even be a spare arduino). See this or this \$\endgroup\$
    – jb0
    Oct 19, 2022 at 14:33

1 Answer 1

3
+50
\$\begingroup\$

Can that be done?

No. Your laptop's USB controller will not allow to be re-used as something completely different, a USB device.

Also, you'd need the actual USB replying to happen in firmware or at most operating system code, anything else is far too slow – and Proteus is anything but a low-latency in-system emulator, so you're as far from a possible solution as can be.

If you want to do such things, you can use one of the many ARM dev boards with an SoC that comes from a smartphone, automotive infotainment or set-top box heritage, as these do, hardware-wise, support being a USB device instead of a USB host. A popular example of such a device is the raspberry pi series of single-board computers.

You'd then want to develop on the Linux that ships with these devices – you get direct access through the kernel's USB widget infrastructure, to develop your own stuff.

Proteus is still out. You don't need an analog circuit simulator to simulate a digital bus that's basically binary for all practical aspects, running at 12 MHz.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.