Does all USB 2 serial require "connecting"?

I use the FTDI 232RL in my devices. I can solve a way to automatically connect if it finds a serial port, but am wanting to find a way to connect to a computer without having to add a driver first. On the newer macs, the FTDI driver is installed in the kernel so it does not need to be installed. On windows, the driver must be installed. I want a way to plug in a device and have my xojo app just be able to read data from the usb port device and also send data to the usb port device.

I have heard the CP2110 by SiLabs may be an option. Does anyone have ideas on this?

SiLabs CP2110

The on-chip, one-time programmable ROM provides the op
tion to customize the USB Vendor ID, Product ID,
Manufacturer Product String, Product Description String,
Power Descriptor, Device Release Number, Device Serial
Number, and GPIO configuration as desired for OEM applications.

The CP2110 uses the standard USB HID device class which
is natively supported by most operating systems. A
custom driver does not need to be installed for this

The CP2110 devices will not enumerate
as a standard HID mouse or keyboard

I am wondering if using the Monkeybread USB plugin, if I have written the ROM with a unique device ID, maybe is a way to do an autoconnect, driverless communication?


Yes, you can use that device without an additional driver. The key sentence in that description is the “uses the standard USB HID device class” part. HID device drivers are included in Windows, MacOS and Linux.

Now, that doesn’t mean the communication with those devices is easy. I can only speak about my experience with Windows, where there are several system functions that can be used to setup and use HID devices. The downside is understanding and coding all the required functions is not easy (take into account I am a hobbyist with limited exprience and time, and no knowledge of c/c++/c#, which are usually chosen in the MSDN to document their functions).

For Windows I have found a couple of free libraries that will allow easier use of HID devices. I tried one of them and it worked, but it had a drawback (it would block the application during the read process). I can think of a way to work around that, so that shouldn’t be the reason to discard the dll.

If you are willing to pay a little money using the MBS USB plugin is much easier, cross platform, has some Xojo examples, and Christian (from MBS) will reply promptly to any question you may have. So yes, this is one possibility you should consider.


Thanks for that info. Hopefully Christian will see this and have an opinion. Seems he has already done a ton of work on this. I will gladly pay the fee for MB if I can have a driverless ability to send and receive via USB. Even better to have the device automatically connect and disconnect when plugging/unplugging.

Well, you can our plugins. We have classes to directly talk to general USB devices or HID devices in special.

Thanks Christian.

I will have a SiLabs development board in tomorrow and want to test sending data from my processor via the SiLabs link up to a xojo app, and from the app to the processor. The MB documentation is overwhelming for a newbie to USB, maybe Christian has an idea on where to locate an example to test sending and receiving some test data? I would gladly send MB some paypal for some guidance on testing this to shorten the learning curve to test their plugin.

Goal 1. Send a byte from xojo to my processor, my processor will acknowledge via a flashing LED
Goal 2. Send a byte from my processor to the xojo app, the app will display the received data.

Check this:

Thanks for the link. I have looked at all the examples but there is no example for writing to the device or reading from the device, that is what I was hoping for.

I found some examples for connecting, writing and reading in the documentation. I finally got the example code to work to send some data to the SiLabs CP2110 module and from there to my processor. This stuff is a little tricky to sort out. I discovered that you must send 4 characters just to get anything to write. But strangely something like this chr(0) + chr(3) + chr(3) + chr(3) will not write at all, I think it has to do with the first chr being 0. I then found in the MB documentation that they found that you must write at least 61 bytes to get it to write, whereas the first chr should be 0 as the report value. I found that chr(0) will not write in the first position, but 1 or greater will. So there are mysteries to solve, and anyone with some direction as to where to go study this please let me know.

The goal is to sort out how to send data from the xojo app to my processor. In some cases this will be an opcode value followed by some amount of data bytes, a length value, and a final checksum value. Obviously the report number will have to be included somewhere.

It looks like I have to send hex values only as strings. The MBS shows examples like this:

dim s as string

s = chr(1) + chr(0) etc

text.text = str(m.SendMessage(s)) // reply will show how many bytes sent.

I understand that I must send 64 bytes of the MBS data will not send.

Values are LSB first.

How can I send values like 0x41 0x00 0x00 etc? But apparently I must send 64 bytes!