Automatically detect Dot Pad displays over USB#18444
Conversation
Mention PR in changes Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com>
|
We acknowledge that there are other older devices that auto detect against generic usb to serial converters. However, we would really like to move away from this as we feel strongly that this is dangerous. Sending serial commands to a device we can not be sure about could cause undefined behavior which could be damaging or dangerous for the user. So we do not believe that the argument that other devices do it is enough reason to accept this pr unfortunately. |
|
@michaelDCurran wrote:
That said, "VID_0403&PID_6010" looks pretty generic, at least more generic than "VID_0403&PID_6001" which is used in multiple braille displays as well and has been automatically detected by us for ages. The easiest solution is probably to add the driver to the config spec in the |
I can't answer that, bit I don't find it unreasonable to accept that this might cause problems with other serial equipment and having a less aggressive default behavior would be preferable.
Yes, Narrator is weird here by just pushing libusb drivers. I'm not sure though if it does that for geherid VID/PIDs as well. I'm not sure how Dolphin SAM works these days, but in the past I thought you had to trigger a scan manually? JAWS requires you to select/install specific drivers, but should be able to do some autodetection after that. Also, for what it's worth, VoiceOver on Mac seems to aggressively connect to generic USB displays as well.
Both of those are generic product identifiers from FTDI and are also documented in various places as such. The 6010 is a dual serial module, exposing two serial interfaces. Why this is used in this device is unknown to me, but it seems less common in braille displays then the single serial interface module. The 6001 is one of the FTDI single serial modules.
Yes, and it also gives a weird user experience for users upgrading NVDA and/or starting with a new config, on another machine for example. Excluding USB serial by default will cause some USB displays to be detected and others not. People who relied on the autodetect behavior would be confused if that suddenly stopped working on a new installation. I'm open to take the easy way here and exclude DotPad by default, but that creates a weird situation where other USB serial displays are autodetected and this specific one is not. However, on the other hand I think that proposing and working out a whole solution for this generic ID problem including a great UX for all our users, including deafblind ones, is broadening the scope of this PR a lot. Also, I feel that the discussion should be held in an issue or Github discussion where it will be found by more affected users. Users without a DotPad display will not check this PR, but might be interested and affected by this. |
I see your point, but this means we either broaden the scope of this PR a lot or we add this to disabled displays and have unexpected other behavior for this specific displays over other braille displays. I also wonder why this was not a problem with the initial bdDetect system, where generic IDs were already present.
Regardless if we do this in the current PR or not, here are a few of my thoughts on how we can do this:
I would like to hear your thoughts about implementing one or more of these options. |
|
My preference would be 1 or 4. Though I want to consider this a bit more
first.
Re points around why we let this happen in the past: Yes, that is true.
But just because we did in the past, I would hope it does not mean that
we can't identify risk and correct for the future :)
I've definitely seen situations in the past (though I admit before NVDA)
where a device has been incorrectly identified, and a hideous sound has
come out of the device, the device is left in a strangely configured
state, which requires some kind of hardware reset, or perhaps takes some
physical action such as printing.
|
|
@michaelDCurran I would suggest that
|
|
That sounds like a suitable idea.
|
There was a problem hiding this comment.
Pull Request Overview
This PR adds automatic detection support for Dot Pad braille/tactile displays connected over USB. Previously, users had to manually select the correct USB serial port for these devices.
- Enables automatic detection for Dot Pad displays using USB vendor/product IDs
- Adds the Dot Pad to the excluded displays list by default due to generic USB identifiers
- Updates configuration upgrade logic to handle the new excluded display setting
Reviewed Changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| user_docs/en/userGuide.md | Updated documentation to reflect automatic detection capability and configuration options |
| user_docs/en/changes.md | Added changelog entry for the new automatic detection feature |
| tests/unit/test_config.py | Added comprehensive unit tests for the configuration upgrade function |
| source/config/profileUpgradeSteps.py | Implemented configuration upgrade logic to add dotPad to excluded displays |
| source/config/configSpec.py | Updated schema version and default excluded displays list |
| source/brailleDisplayDrivers/dotPad/driver.py | Added automatic detection support and USB device registration |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Qchristensen
left a comment
There was a problem hiding this comment.
Looks good, users will appreciate this - we had an inquiry just the other day :)
Link to issue number:
None
Summary of the issue:
Dot Pad braille/tactile displays are not detected automatically, a user has to manually specify the correct USB serial port.
Description of user facing changes:
Dot Pad displays are automatically detected and due to the auto detection logic a "USB" port entry is added to connect to the first display connected over USB.
Description of developer facing changes:
None
Description of development approach:
Registered the Dot Pad with it's vendor/product ID.
Testing strategy:
Known issues with pull request:
Code Review Checklist:
@coderabbitai summary