[BRLTTY] [issue] HID braille device very slow under certain conditions

Yannick PLASSIARD plassiardyannick at gmail.com
Tue Jun 4 04:20:26 EDT 2024


Dear all,

For a few weeks now, I have to use a Mac to do my job. I have two braille devices:
- a Focus 5 USB device
- A VarioUltra 40 USB-HID device

Before that, I used these two devices on Windows and Linux without any particular issues, either on a real Linux system with Brltty 6.6, or in a Linux VM hosted by Windows with the same Brltty 6.6.

On MacOS however I noticed something strange with my VarioUltra device: the transfer speed of the device (sending braille input / receiving braille dots to print) is very very slow. For example, if I type characters quickly, the device will freeze for several seconds and then the characters will be processed by BRLTTY, making it very inconfortable to use.

About my current setup:
- Running latest macOS Sonoma on an ARM64 (m2Pro) chip
- Running latest VMWare Fusion software version to use a Linux ARM64 Debian virtual machine
- Connect my braille device(s) to the VM and not to the Mac, so that BRLTTY can see and interact with them.


My observations:
- Using the Focus 40 5th generation connected to USB, everything works very well, nothing to complain about. I’m able to read and more importantly write very quickly  (typing at around 4 to 6 chars per second), and everything is responsive.
- Using the VarioULTRA 40 connected to USB-HID to the same VM, things are very sluggish: typing at the same speed will result in the situation described above, i.e. slowness / freeze of the device until either a key is pressed, or a certain time.


What I tried:
1) With the Focus 40:
- Works well everywhere: in a VM hosted by Windows/Mac, Linux host, and MacOS Host using the screen driver.
2) With the VarioULTRA device: Works well on a Linux VM hosted by Windows and linux Host, become sluggish on a Linux VM hosted by MacOS.
3) I tried to change hypervisors, and every software behaves the same, either with UTM or VMWare Fusion (UTM can use either QEMU backend for virtualisation, or Apple’s builtin virtualisation support).
4) I A few years ago, I noticed the very same behaviour with another USB-HID device (Brilliant BI 40X) connected to a real Linux host, but unfortunately was unable to investigate furthermore as I had this device for a couple of hours.

What I understood from the sources:
1) seems there is no Darwin HID support for now, so unable to test it with a compiled version for this OS with a screen driver, like I did with the Focus 40 5th Generation.
2) It seems that the async_io stack which is responsible for scheduling input/ouput events (and other things as well) does some polling so that it does not actually « sleeps » for a given time before reading data from the device. I tried to understand how timeouts are computed, to see if the issue could come from this computation, but I’m still in the early stage of understanding this stack and I currently did not find anything regarding this.

Therefore, here are my questions:
1) Does anyone using an USB-HID device already experienced such behaviours in the past, and if so, did you manage to solve it?
2) Which logs would be necessary to investigate this furthermore (log categories / level)?
3) If you’re thinking about something I did not try yet, feel free to point it out, I’ll be happy to try it.

Many thanks in advance for your answers,

Best,

Yannick


More information about the BRLTTY mailing list