Subject: Built-in UVC camera never appears on the bus under Linux, port powered, works in Windows (Acer Nitro ANV16S-41)
Vanchez Rodriges <[email protected]>
| Newsgroups | org.kernel.vger.linux-usb |
|---|---|
| Message-ID | <CAEoJKMsytZcfNLBWezRGBUsmOYRBxFMoEnJoNin07AH+26x6PQ@mail.gmail.com> |
Hello,
I am looking for advice on how to trace this further, not for a fix.
On an Acer Nitro ANV16S-41 the built-in camera has never enumerated under
Linux. The port it is wired to has power, but nothing answers on it. The same
camera enumerates normally under Windows 11 on the same machine, on the same
port, with the standard usbvideo class driver. So the module works and the
difference is in how the two systems bring it up.
Hardware
Model: Acer Nitro ANV16S-41, board HWK / BRZ_SKF
BIOS: INSYDE V1.14, EC 1.8
CPU: AMD Ryzen 7 260
xHCI: 0000:64:00.4, root hubs usb5 (2.0) and usb6 (3.0), one port each
Camera: USB 0408:4035, SunplusIT module, USB 2.0
Kernels: 7.0.0-29, 7.0.0-28, 6.17.0-20, 6.17.0-14 (Ubuntu 24.04). Never seen
on any of them.
Topology
In the DSDT the camera is \_SB.PCI0.GP17.XHC1.RHUB.PRT1 with child nodes CAM0
(_ADR 1) and CAM1 (_ADR 3). GP17 is 00:08.1, XHC1 is PCI 64:00.4. In Linux
that is usb5-port1, connect_type "hardwired", state "not attached".
usb6-port1 is "not used", so the module is a High Speed device.
Windows uses exactly the same path:
PCIROOT(0)#PCI(0801)#PCI(0004)#USBROOT(0)#USB(1)
ACPI(_SB_)#ACPI(PCI0)#ACPI(GP17)#ACPI(XHC1)#ACPI(RHUB)#ACPI(PRT1)#ACPI(CAM0)
Port registers
Read after keeping the controller awake (echo on > power/control):
64:00.4 port01 : 0x0a0002a0 Speed=0 Link=RxDetect PP WCE WOE
64:00.4 port02 : 0x0a0002a0 Speed=0 Link=RxDetect PP WCE WOE
64:00.3 port01 : 0x00000e03 Speed=3 Link=U0 CCS PP PED (working port)
PP is set on both ports of the controller, CCS on neither.
What was tried
- port disable/enable: portsc goes to Link=Disabled and back to RxDetect,
no device
- controller removed from the PCI bus and rescanned: comes back clean, no
device
- BIOS updated V1.01 -> V1.14, no change
- Fast Boot turned off in BIOS, no change
- warm reboot directly out of Windows into Linux, no change, so Windows
does not leave an enable bit behind in the EC
What the firmware offers
- XHC1 has only _ADR. The port node has only _UPC and _PLD. There is no
_DSM, no power resource method and no other control for the camera
- no GpioIo resource exists in any of the 36 ACPI tables, only 18 GpioInt
- the EC RAM layout, about 130 fields, has no camera field, and none of the
38 _Qxx handlers relates to one
- the ACPI device set seen by Linux matches the one Windows sees, so
nothing is gated on _OSI
The known uvcvideo quirks for 0408:4035 do not apply. Those fix the case
where the device is visible in lsusb but fails at "Failed to query UVC probe
control", and that fix has been in the kernel since 6.11. Here the device
never reaches enumeration.
Questions
1. With PP set and CCS clear on a hardwired port, is there anything else on
the xHCI side worth reading or poking before concluding that the module
itself stays powered down?
2. Is there a practical way to compare the port bring up sequence with what
Windows does, short of a hardware USB analyser?
3. Has anyone seen an AMD platform where the internal camera needs a step
that is neither in ACPI nor in the EC?
Related reports
microphone on the same machine, ALC245, all zeros:
https://lore.kernel.org/linux-sound/CAEoJKMvx4306roZyBX7bZjcRs1T0goH3-V+nauWYnSBJMJLP+A@mail.gmail.com/
Ubuntu bug, microphone:
https://bugs.launchpad.net/ubuntu/+source/linux-hwe-7.0/+bug/2164573
Ubuntu bug, camera:
https://bugs.launchpad.net/ubuntu/+source/linux-hwe-7.0/+bug/2164574
A support request covering both devices was also filed with Acer.
I can run any test on this machine and rebuild kernels if that helps.
Thanks.