Slow USB/Serial Communication

Dear all,
I want to use this project (GitHub - TheChief79/tpm2arduino: Tpm2 Firmware for Arduino) on my Arduino Uno to control 180 RGB-LEDs with my VDR (VirtualDiskRecorder) running on Gentoo.
The developer runs tpm2arduino on an Arduino Duemilanove without problems with a high datatransfer-rate.
My Arduino Uno is extremely slow receiving data. Every second the lights gets refreshed. The deleoper tested some other boards. It works perfectly only with the FTDI-controller...
How can I fix this problem to use my Arduino Uno???

Best regards,
Sven

What happens when the Arduino Uno writes text to the computer (to the serial monitor), is that with normal speed ?

I test the following sript:
void setup(){};

void loop()
{

Serial.begin(500000);
Serial.println("\r\rTEXTWITH540CHARACTERS");
};

and received the data using "cat /dev/ttyACM0"

it is very fast!

How do you setup the /dev/ttyACM0 port ? without handshake I hope.
It could be a driver problem, so I'm not sure it can be solved easily.

I just pluged the arduino in and set the baudrate on 500000 (stty -F /dev/ttyACM0 500000)

Could you use a "normal" baudrate, like 115200 ? stty -F /dev/ttyACM0 115200
That is about 10kbyte per second. Is that not enough ?
I don't know if the 500000 is supported by Arduino or computer. Perhaps only the FTDI supports 500000. I know also the Arduino Leonardo allows much higher baudrates than 115200. But the serial port on the Leonarde is a combination of hardware and software, so that might slow it down.

I'm not pretending to know anything about the OP's problem.
I have had no trouble getting an Uno to work at 1,000,000 baud.
And a Leonardo ignores the baud rate when using Arduino 1.5.7 and works at full USB speed with a throughput about 3 or 4 times faster than the Uno.

...R

Well, the baudrate is expected by the software running on windows.

Do you have an official Arduino Uno ? which version ?
Or a clone from Ebay ? If so, can you make a photo of it ?
Perhaps a clone has problems with the high baudrate, but I don't know if clones have problems with that.

Could you continue with a board with the FTDI ? I guess only a real FTDI can do the high baudrates and not a counterfeit FTDI.
Can you change the baudrate in Windows software ? It is a bad piece of software if you can not change it... :wink:

It is an original Uno R3!
I just bougt a new "SainSmart Duemilanove" (the Duemilanove is not available in Germany anymore) and I hope, a FTDI is onboard.
Otherwise I have to buy an FTDI-shield...

I'm sorry, I don't have a Uno R3. So I can't test it.
We have also not found the cause yet. It might still be something else, not the baudrate.

500000 (500k) is about 50kbyte per second. The buffer size is 64 byte. The 64 byte will be filled in 1.3ms.
Perhaps buffers are overflowing. Perhaps some data is thrown away or the Arduino starts polling.

When you buy a FTDI module with FT232 chip on it on Ebay, you end up with a counterfeit one. Google for : ftdi counterfeit
Or watch this video EEVblog #676 - RANT: FTDI Bricking Counterfeit Chips! - YouTube

svenf:
Well, the baudrate is expected by the software running on windows.

You need to understand that the baudrate only comes into play on the Arduino board. With an Uno or Mega the USB connection goes to a separate Atmega chip which converts the signal for the main Atmega Rx and Tx pins.

On the Leonardo there is only one Atmega chip which connects directly to the USB cable.

...R