Skip to content
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

GoXLR - Dynamic Channel Count #444

Open
FrostyCoolSlug opened this issue Sep 26, 2024 · 6 comments
Open

GoXLR - Dynamic Channel Count #444

FrostyCoolSlug opened this issue Sep 26, 2024 · 6 comments

Comments

@FrostyCoolSlug
Copy link
Contributor

The next GoXLR firmware release is going to add two new output channels for the full sized device, labeled a 'Stream Mix 2'. Outside of general usage, there's no way to determine whether these channels exist or not outside of the UCM2 definitions as the device is booting up.

Is there currently the facility to configure the devices virtual channels based on the number of channels reported by the hardware (so if there are 23 hardware channels, use the current configuration, if there are 25 hardware channels use an adjusted configuration), and if not, could you suggest the best way to handle this implementation?

Regards,
Craig McLure

@FrostyCoolSlug FrostyCoolSlug changed the title GoXLR - Dynamic Output Channel Count GoXLR - Dynamic Channel Count Sep 26, 2024
@perexg
Copy link
Member

perexg commented Oct 14, 2024

Can we determine the firmware version using sysfs ? E.g. in /sys/class/sound/card1/device/ tree (replace the sound card number with correct one).

@FrostyCoolSlug
Copy link
Contributor Author

Apologies for the delay in getting back to you..

I've done some checking through sysfs, but I've not been able to find any differences between the various firmware versions, it doesn't appear anything from the AS Format Descriptors are stored anywhere in the device node, and other than the additional channels nothing in the USB description has changed.

We could possible get the firmware to 'hint' at something, but from our checks there's no formal (or at least, compliant) way to indicate a firmware version in the general USB descriptors.

@perexg
Copy link
Member

perexg commented Mar 12, 2025

Probably, we can parse /proc/card#/stream0 contents to know the number of channels for this device to do proper configs. Could you attach the contents of this file?

@perexg
Copy link
Member

perexg commented Mar 12, 2025

Another way (and probably preferred) is to check the changes in USB descriptors accessible through sysfs.

Example path: /sys/class/sound/card1/device/../descriptors

Replace card1 with the proper card number. It would be nice to have samples (file contents in the binary form) for testing.

@FrostyCoolSlug
Copy link
Contributor Author

Github is being a little picky about what I can attach to this issue, so I've created a new repo with the requested files:

https://github.com/FrostyCoolSlug/goxlr-alsa-configs

The GoXLR Mini will always have 21 channels, regardless of firmware version, where as the full device will have either 23 or 25 channels (It's possible a super old firmware has 21, but I've not found that at this point).

Thanks.

@perexg
Copy link
Member

perexg commented Mar 12, 2025

Thank you. The byte at offset 0x9c in the binary file (USB descriptors) represents the number of channels. Let me think, how to extract this information. We can read the sysfs file already, but only ASCII string is expected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants