-
-
Notifications
You must be signed in to change notification settings - Fork 632
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unstable auto detect for Humanware Brailliant and APH Mantis Q40 braille displays #13153
Comments
note, issues with the Brailliant were reported by @dkager. They have the same firmware under the hood. |
Thanks for reporting this. I can confirm the problem also occurs when you select Bluetooth as the port, rathern than Auto. USB works as usual. Might the Chameleon 20 also be affected? |
Likely, isn't that just a rebranded Brailliant? |
Try to use new HID protocol after, not before all other driver matches Closes #13153 Summary: Auto detection was broken for Humanware Brailliant and APH Mantis q40 when working over Bluetooth. It looks like they implement an incomplete version of the HID protocol.
@LeonarddeR and @dkager could you please test and confirm this is fixed in the RC for 2021.3.1 https://www.nvaccess.org/post/nvda-2021-3-1rc1/ |
Yes, this works fine for me.
|
Not for me unfortunately (Brailliant BI 40X). Here is the log of me trying a couple of times, with various errors:
|
@dkager I'm looking into this today, could you attach Debug level logs with the hwIO category enabled (via advanced settings panel). Please do this with 2021.3.1rc1 and 2021.2. Having both logs will let me compare where things deviate from the expected path, and to confirm that this set of actions works correctly on 2021.2. We are eager to get this release out in the next few days, hopefully we can address this before then. |
@dkager I assume this is global autodetect, not only auto detect for the hid driver? |
Ugh, I think I know the issue here. BdDetect is calling getDriversForConnectedUsbDevices and getDriversForPossibleBluetoothDevices. if getDriversForPossibleBluetoothDevices yields a match that only matches the HID driver before yielding the match associated with the Brailliant driver, NVDA will still try the HID driver first. The logic I changed only has to do with device matches that match both the vendor and hid driver. In that case, the vendor driver is now prefered. This is worrying and really a bug in the display firmware's, they really ought not provide a HID device that's malfunctioning like this. I see several fixes to this:
I guess 2 is preferred, though this might require a lot of testing. I can have a look as I have a device. The steps to reproduce a working situation would be as follows:
If this happens, auto detect will be smart enough to try the next device in the list, which is likely to be the Brailliant driver. It will at most introduce a delay in auto detection. |
I'm afraid this is not going to help much. I looked at the hwIo logs for my APH Mantis Q40, but when the HID driver is used, NVDA just writes braille to the display and the display simply seems to ignore it. Key presses on the display don't enter NVDA at all. |
Thanks for the updates @LeonarddeR. @dkager no need for the logs at this stage. Can we fix the order that the matches are yielded? Perhaps by filtering in the |
The problem with that, is that the vendor bluetooth implementation is also HID based. |
Will it have the |
What @LeonarddeR wrote makes sense. I got the Brailliant to work once yesterday by explicitly choosing it and setting the port to Bluetooth. Then when switching back to either the Auto port or global autodetect, you either get an error or sometimes an empty braille display. Although that might be the firmware having issues. |
@feerrenrut The try-build definitely improves connectivity. I have had a few cases where there was either no connection through Bluetooth or NVDA crashed as soon as I pressed OK to change the braille display. Most times Bluetooth worked. I haven't been able to reliably reproduce the error. I could look at it further, but that will probably have to wait until the weekend. |
@dkager If you get a crash with this build, could you please collect the crash dump and the NVDA log for us? |
If testing over the weekend, please do so with the build of RC to test merged changes: https://ci.appveyor.com/api/buildjobs/pl56jgcjg2ym6xap/artifacts/output%2Fnvda_snapshot_rc-24378%2Ccaf14822.exe I'll be releasing an RC2 early next week based on this. |
I have as yet not been able to reproduce the problem with debug logging, but admittedly haven't restarted NVDA much. I will post logs as soon as I get errors, but overall it seems that as soon as the correct driver is loaded, the rest of the session goes very smoothly. Putting the Brailliant into sleep mode and reactivating it later also works well, proving that autodetection within the same driver and port works. |
Steps to reproduce:
Actual behavior:
NVDA sometimes fails detecting the display, because it tries the HID prottocol driver first. This driver reports as available but is not supported by the display. Interesting enough, as soon as you select the HID driver manually, NVDA connects to the display but the displays stays empty. When you open the display dialog again, nothing is selected and the HID driver disappeared.
Note that sometimes, NVDA manages to connect to the display with the Brailliant driver, but behavior is pretty instable on my system.
Expected behavior:
Direct connection using the Brailliant driver when using auto detect.
System configuration
NVDA installed/portable/running from source:
Installed
NVDA version:
2021.3
Windows version:
Windows 11 22000.348
Other questions
Does the issue still occur after restarting your computer?
Yes
Have you tried any other versions of NVDA? If so, please report their behaviors.
Same behavior as current Alpha.
If NVDA add-ons are disabled, is your problem still occurring?
Yes
Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?
Yes
The text was updated successfully, but these errors were encountered: