I have a modern PC running Fedora 24 with a real-time patch (CCRMA audio tools) with an ASUS Essence STX II sterio sound card installed on PCIe. With it we run a playback/capture application. Also, we need to integrate CAN (Controller Area Network) and BLE (Bluetooth Low Energy) into the system and have a PCIe-card for each of these functions. The CAN PCIe card is from PEAK (PCAN-PCI Express 2-ch) and the BLE card is an Intel 8260 M2 card that HP have put on a PCIe card (AFAIK).
With only the audio card installed it works fine (using ALSA as API). When the CAN and BLE is installed the following is observed:
- Playback works as before.
- One capture channel only returns zero (0) or minus one (-1) in all samples.
- The other capture channel returns values in the range -2..2 (expected -100..100) and when applying our application signal processing low quality, but detectable, expected results are presented.
- The ALSA API report no problems in setup and configuration.
- CAN and BLE functions as expected.
Without any deeper PCIe experience I suspect that CAN and/or BLE PCIe cards jumble the mapping of the sound card functions. I see before me some hands on setup scripting to untangle the cards but have no (!) idea where to begin.
- Tell me if my hunch is in the ballpark?
- Inform me on where I might go for information on how to rectify the problem?
- ...or, share your solution to a similar problem?
arecord -l gives the same report for all card combinations (audio card only, BLE + audio and CAN + BLE + audio).
dmesg does not shout odd, but I'm not qualified to tell.
lspci -vv, with all three card installed, I have
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 Bus: primary=00, secondary=03, subordinate=03, sec-latency=0 Bus: primary=00, secondary=04, subordinate=05, sec-latency=0 Bus: primary=04, secondary=05, subordinate=05, sec-latency=0
from all entries that claim to be PCI bridges. I interpret that to be a structure where the main (00) bus have four sub-busses (01-04) and that sub-bus 04 have another sub-bus attached (bus 05).
The audio card has BDF 05:04.0 and use IRQ 16, that propagates through the 00-04-05 bridge, 04:00.0. Now, there is a "SMBus" device at 00:1f.4 also using IRQ 16. That device is also present with only the audio card installed (when the audio works as expected), then also using IRQ 16. The fourth (!) user of IRQ 16 is the PEAK CAN network controller, at 01:00.0. All other devices listed has unique IRQ numbers.
I'm learning by the minute but cannot decide if non-unique IRQs are a problem. Is it a problem? Are there better/other information in
lspci that I should look at?