• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

ASR Open Source Streamer Project

somebodyelse

Major Contributor
Joined
Dec 5, 2018
Messages
3,682
Likes
2,960
Sorry for not reading through the whole topic, but is it possible to have Replay Gain (like in Foobar2000) in a streamer that reads music from USB or NAS? :) I do not use Volumio in my miniDSP because it has no Replay Gain. I refuse to listen to music that jumps +/- 10dB from track to track - I better turn on my PC with Foobar than to accept such a downgrade.
It's certainly possible. Rune has apparently supported it for a long time. LogitechMediaServer (as used on piCorePlayer and daphile among others) uses the tags too.
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
For the USB C cases I was unsure of what bus I should use because the Ultralite does not show up in lsusb so I plugged in the M4 to USB C and used the bus identified by lsusb.

Just a note: tshark -D should list all interfaces, and the -i parameter can be repeated, e.g. tshark -i usbmon1 -i usbmon2

For the captures made when playing music I was streaming to an ALSA loopback using shairport-sync and using CamillaDSP with the loopback as capture device and the Ultralite as playback device.

Still I wonder how you made your USB device to send the enumeration data while playing. Not important for this troubleshooting, just learning :)
Let's do the enumeration troubleshooting without playback/capture. Since your device uses implicit feedback, the snd-usb-audio module will require a special parameter or compiling a quirk for glitchfree playback, but let's leave this for the next step.

Let's focus on ubuntu first, RPi4 and CM4. Please start the tshark capture and run dmesg -w. Plug the Ultralite to USB-C with the dwc2 module loaded and switched to the host mode, for both devices. Please post the two captures and dmesg outputs (if anything printed out). You may have already done that but please let's make it again, in a consistent manner.

Also please send kernel version (uname -a).

BTW, do you have dwc_otg module in your kernel? It may be useful to try instead of dwc2 , see https://forums.raspberrypi.com/viewtopic.php?t=179259#p1141001 . There still must be a reason to use this driver because RPi devs added it very recently to newer kernels - 5.13 just a month ago https://github.com/raspberrypi/linux/commits/rpi-5.13.y/drivers/usb/host/dwc_otg , 5.14 just 9 days ago https://github.com/raspberrypi/linux/commits/rpi-5.14.y/drivers/usb/host/dwc_otg .
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI
See attached for requested captures (renamed from .pcap to .txt so I could upload). These started off with nothing plugged in the Pi, I then started the capture, waited a bit and plugged in the Ultralite, then waited a bit and unplugged the Ultralite. For the RPi4 using the USB-C port I see nothing in dmesg -w, for the CM4 I get what is shown below.

Code:
[  282.555635] usb 1-1.1: new high-speed USB device number 3 using dwc2
[  282.656816] usb 1-1.1: New USB device found, idVendor=07fd, idProduct=000c, bcdDevice= 2.00
[  282.656852] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  282.656870] usb 1-1.1: Product: UltraLite-mk5
[  282.656884] usb 1-1.1: Manufacturer: MOTU
[  282.656897] usb 1-1.1: SerialNumber: 0001f2fffefff074
[  282.718262] cdc_ether 1-1.1:1.5 eth1: register 'cdc_ether' at usb-fe980000.usb-1.1, CDC Ethernet Device, 00:01:f2:ff:f0:75
[  282.719092] usbcore: registered new interface driver cdc_ether
[  282.770752] usbcore: registered new interface driver snd-usb-audio
[  282.804496] cdc_ether 1-1.1:1.5 enx0001f2fff075: renamed from eth1
[  301.164791] usb 1-1.1: USB disconnect, device number 3
[  301.167099] cdc_ether 1-1.1:1.5 enx0001f2fff075: unregister 'cdc_ether' usb-fe980000.usb-1.1, CDC Ethernet Device

uname -a
Linux raspberrypi7 5.13.0-1009-raspi #10-Ubuntu SMP PREEMPT Mon Oct 25 13:58:43 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux

It does seem like I have dwc_otg installed, at least I see an output when I run modinfo dwc_otg.

Michael
 

Attachments

  • usbmon_all-rpi4-ubuntu-usbc.txt
    95.6 KB · Views: 78
  • usbmon1-cm4-ubuntu-usb2.txt
    72.4 KB · Views: 74

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI
Thanks for sharing.

Quick question for you, you've mentioned implicit feedback a few times. I see that implicit feed back is listed when I run cat /proc/asound/UltraLitemk5/stream0 but what does this actually mean? Does it make sense that I do not have any issues with the Ultralite on the RPi4 even though you are saying that implicit feedback is not enabled?

Michael
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
There were changes recently regarding the implicit feedback and the current USB-audio driver may enable the implicit feedback automatically when correctly specified by the USB configuration.

It's possible to check whether the feedback works with recording USB packets and analyzing their lengths. These are my notes I took when troubleshooting RTX6001 quirk:

Bash:
#IN packets:
tshark -r /tmp/usblog.pcap -Y 'usb.src == "2.3.1" and usb.transfer_type == 0x00 and usb.endpoint_address == 0x81' -T fields -e usb.iso.iso_len > /tmp/in_lengths.txt

#OUT packets:
tshark -r /tmp/usblog.pcap -Y 'usb.dst == "2.3.1" and usb.transfer_type == 0x00 and usb.endpoint_address == 0x01' -T fields -e usb.iso.iso_len > /tmp/out_lengths.txt


tr ',' '\n' < /tmp/in_lengths.txt  | sort | uniq -c
    684 40
 931484 48


tr ',' '\n' < /tmp/out_lengths.txt  | sort | uniq -c
932198 48

It shows that the incoming stream contained mostly packets 48 bytes long (48000 audioframes * 8 bytes /8000 usb frames =48 bytes per usb frame), mixed with a few packets 40 bytes long. But the outgoing stream contained only 48-bytes packets, clearly no feedback at work. As a result after a while the input FIFO in RTX6001 XMOS overflew as the actual DAC clock (incoming stream) was slightly slower than the USB controller clock, resulting in a glitch and ruining longer-running measurements. After adding the USB IDs to the quirks table the outgoing stream got basically the same ratio of 48-byte and 40-byte packets and the duplex mode became stable.

You can check on your soundcard, just change the USB bus/device ID, capture endpoint 0x83, playback endpoint 0x02 (see your lsusb -v).
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI
OK, followed your instructions but not quite sure how to interpret. From viewing the tshark log it looked like there were different the in / out usb devices, IN was 1.3.3 and OUT was 1.3.2. When I used those I get the following results.

tr ',' '\n' < /tmp/in_lengths.txt | sort | uniq -c
27631 576
33 624

tr ',' '\n' < /tmp/out_lengths.txt | sort | uniq -c
27631 648
33 702

Not super worried about this, just trying to get some understanding.

Michael
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
Michael, perfect. Your results show that the implicit feedback is working properly. The IN stream seems to be 96kHz/12ch/32bits (one audioframe is 624-576=48 bytes), OUT stream 96kHz/18ch/24bits (audioframe 702-648=54 bytes). The audio clock runs slightly faster than the USB controller clock in the host. If the implicit feedback was not honored, the FIFO in the USB receiver would keep underflowing. The clocks ratio is (27631*12 + 33*13)/(27631+33)*12 = 1.0000994.

it looked like there were different the in / out usb devices, IN was 1.3.3 and OUT was 1.3.2.

That's correct. The last number in the triple is endpoint number. Your EP OUT is 0x02 (EP OUT 2), therefore 1.3.2. Your EP IN is 0x83 while the 0x80 denotes direction IN, the remaining 0x03 is EP IN 3, therefore 1.3.3.

Which USB port did you use for this test, the USB-As (VL805-based)?
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
I tend to believe the problem with the many-channels Motu device is poor performance of the dwc2 driver in the host mode, it is focused mostly on the gadget mode. Missed interrupts and thus packets would result in the cracked stream. Testing the dwc_otg driver with this device would tell more.
 

Morpheus

Active Member
Forum Donor
Joined
Jun 5, 2019
Messages
132
Likes
144
Location
E.C
I have been eyeing this thread since day 1 looking for a tutored way to build me a state of the art server, with DRC capability for not much outlay, in my first foray into streaming ( apart from the cheap n cheerfull Miibox S I have been using to stream Tidal into my DACs. Since then, it seems contrary to the Directiva threads, traction and interest has waned and the titled purpose changed , and it has become just a place for knowledgeable members to discuss advanced builds and scenarios in rather technical terms..Will this thread get somehow reactivated into its original aim, or should I buy a Pi and flash Moode or Picore on it, or just buy a 2nd Node and use digital out and call it a day...?
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI
I have been eyeing this thread since day 1 looking for a tutored way to build me a state of the art server, with DRC capability for not much outlay, in my first foray into streaming ( apart from the cheap n cheerfull Miibox S I have been using to stream Tidal into my DACs. Since then, it seems contrary to the Directiva threads, traction and interest has waned and the titled purpose changed , and it has become just a place for knowledgeable members to discuss advanced builds and scenarios in rather technical terms..Will this thread get somehow reactivated into its original aim, or should I buy a Pi and flash Moode or Picore on it, or just buy a 2nd Node and use digital out and call it a day...?
What are your needs? IMO Moode on a RPi + USB DAC probably works for most people that are looking to feed a 2 channel USB DAC.

To me the things missing from a standard RPi / Moode setup are support for multichannel USB DACs which require newer kernels, volume control via remote, a display and a nice case to tie it all together.

The recent technical discussion / troubleshooting was around getting the currently best available 10 channel USB DAC in terms of price / performance (Ultralite Mk5) to work with the RPi CM4 as it would have allowed for a USB port to be installed on the front panel of a case through the CM4 USB pin header for the FLIRC USB IR receiver (for remote volume control). I mentioned it post #620 but this discussion inadvertently led me to realize that a USB extension could be run from the RPi 4 USB C port to a USB A port on the front panel of a case (while powering the RPi through the pin header) which allows for a standard RPi4 to be used instead of the CM4. I received the USB extension last night and tested it out and it worked great with the FLIRC USB IR receiver. To me that was the last hardware piece to solve. I've also somewhat finalized the display layout to something that works for me, but of course this being an "open source" project it is rather easy to change the display layout to meet your own needs. I've attached a picture of the current setup with the USB extension for reference.

I've laid out the front panel for a 3.2" OLED display and USB A port in CAD for Galaxy 1U 230 mm x 170 mm aluminum case, just need to do the CAD layout of the back panel for the RPi4 and the 5.5 mm power port. All in cost will be around $300 for a RPi4 + case (including machining) + display + FLIRC USB IR receiver and will work with most USB DACs. Once I have everything setup in the case I will post the CAD files for the case machining and step by step software setup instructions (and maybe an automated setup script).

To me such a setup meets all of the original requirements in this thread, albeit at a higher price point than probably originally intended. Running Ubuntu Server instead of Moode gives you a newer kernel that supports many multichannel USB DACs. This setup with a MOTU M4 can easily implement the required DSP for the Directiva in CamillaDSP. If you want to add subwoofers to the Directiva or support for future Directiva projects requiring more channels just add a MOTU Ultralite Mk5 or Focusrite 18i20 2nd gen in place of the M4. The other advantage of Ultralite Mk5 and the 18i20 is that because of additional input / output functionality they can be used with traditional TOSLINK / SPDIF sources in addition to working as streamers and can add trigger outputs by using a Bobwire DAT1 with the TOSLINK / SPDIF outputs.

To be honest the lack of availability of the Okto DAC8pro is a major bummer as it is a very elegant solution to pretty much all of the issues mentioned above that requiring fussing around with DIY. It has an IR receiver for remote volume control, a very nice display and a built in trigger output, just add a RPi4 and you are done (I believe it is plug and play with the kernel used by Moode). That being said the DIY option with the Ultralite Mk5 is several hundred dollars less than the Okto DAC8 pro and the 18i20 and M4 are even cheaper.

Michael

IMG_7304.jpeg
 

Morpheus

Active Member
Forum Donor
Joined
Jun 5, 2019
Messages
132
Likes
144
Location
E.C
Thank you for clearing things up, that seems a viable path then, I will keep on checking here. The only thing missing here for me is bluetooth in ( dongle?), a couple of digital ins for my TV / Box or another source , and FIR filtering perhaps, wich I don't know of an easy off-the-shelf way to implement with a Pi, as from what I gather, Camilla gets you IIR crossovers and PEQs but not FIR, right..? I have a MiniDsP DRC DI and a RME ADi 2 and have used PEQ to get some improvements but its not enough, I have a troublesome setup I can't ameliorate more with treatments or positioning. I also have dabbled with Rephase, but not really made the grade...I have an asymetric, rather reflective, big and leaky setup/room, and I am probably not knowdgeable or have invested enough time and resources ( studying enough acoustics and drc, getting a non USB mic and DAC/ preamp .. ) to get there ( just Umik 1 on REW, some notions on acoustics an psychoacoustics, minimum phase and excess phase behaviour, Swissbear tutorials and such..) Probably I should just bite the bullet and get Acourate DRC and what the real pros can get you, wich would allow me to keep the Pi on 2 channel with an USB converter out ( have one)... Or forget about not wanting a regular pc to interact with to listen to music and films on the stereo ( wich I really don't want to , its got to be transparent to the rest of the family) and use one of Mitcho' s DRC software selection (minus DRC, of course, that's for you guys..) for filter generation and convolution on JRiver (have an old laptop running windows XP with JRiver I paid 50 bucks ,v.15 I think, collecting dust..).
Anyway, I wanna ditch CDs for good: I have had 3 transport failures in 25 years ( 1 Sony XA50 ES trashed after 8 years, bought new, 2 Philips transports inside an MFidelity) and now my cheap Samsung DVD crapped out on me, and my MF is picky about cds, again...Done..
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI
Thank you for clearing things up, that seems a viable path then, I will keep on checking here. The only thing missing here for me is bluetooth in ( dongle?), a couple of digital ins for my TV / Box or another source , and FIR filtering perhaps, wich I don't know of an easy off-the-shelf way to implement with a Pi, as from what I gather, Camilla gets you IIR crossovers and PEQs but not FIR, right..? I have a MiniDsP DRC DI and a RME ADi 2 and have used PEQ to get some improvements but its not enough, I have a troublesome setup I can't ameliorate more with treatments or positioning. I also have dabbled with Rephase, but not really made the grade...I have an asymetric, rather reflective, big and leaky setup/room, and I am probably not knowdgeable or have invested enough time and resources ( studying enough acoustics and drc, getting a non USB mic and DAC/ preamp .. ) to get there ( just Umik 1 on REW, some notions on acoustics an psychoacoustics, minimum phase and excess phase behaviour, Swissbear tutorials and such..) Probably I should just bite the bullet and get Acourate DRC and what the real pros can get you, wich would allow me to keep the Pi on 2 channel with an USB converter out ( have one)... Or forget about not wanting a regular pc to interact with to listen to music and films on the stereo ( wich I really don't want to , its got to be transparent to the rest of the family) and use one of Mitcho' s DRC software selection (minus DRC, of course, that's for you guys..) for filter generation and convolution on JRiver (have an old laptop running windows XP with JRiver I paid 50 bucks ,v.15 I think, collecting dust..).
Anyway, I wanna ditch CDs for good: I have had 3 transport failures in 25 years ( 1 Sony XA50 ES trashed after 8 years, bought new, 2 Philips transports inside an MFidelity) and now my cheap Samsung DVD crapped out on me, and my MF is picky about cds, again...Done..

To me the easiest way to handle multiple digital inputs is with upstream source selection, OpenDRC-DI is actually a really good option for this and I use one myself upstream of my Okto DAC8pro + RPi4 to give me 3 digital inputs and to resample all sources to 96 kHz which is what I constantly run CamillaDSP at.

Something that I have not personally implemented but would also be a good option is switching of inputs by changing CamillaDSP configurations via remote with the selected input shown on the display, you could switch between loopback (i.e. streamer), TOSLINK, SPDIF and analog inputs on the Ultralite Mk5 for example. You would also need to handle sample rate switching assuming your sources have different rates but others have implemented that so it is definitely possible.

I am not really familiar with bluetooth audio but it seems like if you can get audio in to the RPi via bluetooth then an ALSA loopback should be able to route that to CamillaDSP. RPi4 has built in bluetooth but not sure how much that will be degraded by using a case.

CamillaDSP does FIR and the RPi4 has plenty of power (much more than an OpenDRC-DI), as an example I have done 8 channels at 96 kHz of 16K taps per channel.

Once I have the basic streamer in a finished case (hopefully by end of the year) I definitely plan on working some of the input / sample rate switching stuff as that will bring a big improvement in usability for folks wanting to integrate multiple sources.

Michael
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
The modprobe command typically returns no text when loading the module ends with no error. Usually dmesg shows what hardware was recognized by the driver.

Does dwg_otg result in the same problems with enumeration/performance as dwc2? Thanks.
 

phofman

Senior Member
Joined
Apr 13, 2021
Messages
489
Likes
319
It's possible the module is missing in your distro, but typically modprobe complains when a module does not exists. What did the command "modprobe dwc_otg" output? Thanks.
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,477
Likes
3,315
Location
Detroit, MI
I get no output when i run modprobe dwc_otg. This is what I get when I run modinfo dwc_otg.

Code:
modinfo dwc_otg
name:           dwc_otg
filename:       (builtin)
license:        GPL
file:           drivers/usb/host/dwc_otg/dwc_otg
author:         Synopsys Inc.
description:    HS OTG USB Controller driver
parm:           otg_cap:OTG Capabilities 0=HNP&SRP 1=SRP Only 2=None (int)
parm:           opt:OPT Mode (int)
parm:           dma_enable:DMA Mode 0=Slave 1=DMA enabled (int)
parm:           dma_desc_enable:DMA Desc Mode 0=Address DMA 1=DMA Descriptor enabled (int)
parm:           dma_burst_size:DMA Burst Size 1, 4, 8, 16, 32, 64, 128, 256 (int)
parm:           speed:Speed 0=High Speed 1=Full Speed (int)
parm:           host_support_fs_ls_low_power:Support Low Power w/FS or LS 0=Support 1=Don't Support (int)
parm:           host_ls_low_power_phy_clk:Low Speed Low Power Clock 0=48Mhz 1=6Mhz (int)
parm:           enable_dynamic_fifo:0=cC Setting 1=Allow Dynamic Sizing (int)
parm:           data_fifo_size:Total number of words in the data FIFO memory 32-32768 (int)
parm:           dev_rx_fifo_size:Number of words in the Rx FIFO 16-32768 (int)
parm:           dev_nperio_tx_fifo_size:Number of words in the non-periodic Tx FIFO 16-32768 (int)
parm:           dev_perio_tx_fifo_size_1:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_2:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_3:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_4:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_5:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_6:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_7:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_8:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_9:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_10:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_11:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_12:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_13:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_14:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           dev_perio_tx_fifo_size_15:Number of words in the periodic Tx FIFO 4-768 (int)
parm:           host_rx_fifo_size:Number of words in the Rx FIFO 16-32768 (int)
parm:           host_nperio_tx_fifo_size:Number of words in the non-periodic Tx FIFO 16-32768 (int)
parm:           host_perio_tx_fifo_size:Number of words in the host periodic Tx FIFO 16-32768 (int)
parm:           max_transfer_size:The maximum transfer size supported in bytes 2047-65535 (int)
parm:           max_packet_count:The maximum number of packets in a transfer 15-511 (int)
parm:           host_channels:The number of host channel registers to use 1-16 (int)
parm:           dev_endpoints:The number of endpoints in addition to EP0 available for device mode 1-15 (int)
parm:           phy_type:0=Reserved 1=UTMI+ 2=ULPI (int)
parm:           phy_utmi_width:Specifies the UTMI+ Data Width 8 or 16 bits (int)
parm:           phy_ulpi_ddr:ULPI at double or single data rate 0=Single 1=Double (int)
parm:           phy_ulpi_ext_vbus:ULPI PHY using internal or external vbus 0=Internal (int)
parm:           i2c_enable:FS PHY Interface (int)
parm:           ulpi_fs_ls:ULPI PHY FS/LS mode only (int)
parm:           ts_dline:Term select Dline pulsing for all PHYs (int)
parm:           debug: (int)
parm:           en_multiple_tx_fifo:Dedicated Non Periodic Tx FIFOs 0=disabled 1=enabled (int)
parm:           dev_tx_fifo_size_1:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_2:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_3:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_4:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_5:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_6:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_7:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_8:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_9:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_10:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_11:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_12:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_13:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_14:Number of words in the Tx FIFO 4-768 (int)
parm:           dev_tx_fifo_size_15:Number of words in the Tx FIFO 4-768 (int)
parm:           thr_ctl:Thresholding enable flag bit 0 - non ISO Tx thr., 1 - ISO Tx thr., 2 - Rx thr.- bit 0=disabled 1=enabled (int)
parm:           tx_thr_length:Tx Threshold length in 32 bit DWORDs (int)
parm:           rx_thr_length:Rx Threshold length in 32 bit DWORDs (int)
parm:           pti_enable:int
parm:           mpi_enable:int
parm:           lpm_enable:LPM Enable 0=LPM Disabled 1=LPM Enabled (int)
parm:           ic_usb_cap:IC_USB Capability 0=IC_USB Disabled 1=IC_USB Enabled (int)
parm:           ahb_thr_ratio:AHB Threshold Ratio (int)
parm:           power_down:Power Down Mode (int)
parm:           reload_ctl:HFIR Reload Control (int)
parm:           dev_out_nak:Enable Device OUT NAK (int)
parm:           cont_on_bna:Enable Enable Continue on BNA (int)
parm:           ahb_single:Enable AHB Single Support (int)
parm:           adp_enable:ADP Enable 0=ADP Disabled 1=ADP Enabled (int)
parm:           otg_ver:OTG revision supported 0=OTG 1.3 1=OTG 2.0 (int)
parm:           microframe_schedule:Enable the microframe scheduler (bool)
parm:           fiq_enable:Enable the FIQ (bool)
parm:           nak_holdoff:Throttle duration for bulk split-transaction endpoints on a NAK. Default 8 (ushort)
parm:           fiq_fsm_enable:Enable the FIQ to perform split transactions as defined by fiq_fsm_mask (bool)
parm:           fiq_fsm_mask:Bitmask of transactions to perform in the FIQ.
Bit 0 : Non-periodic split transactions
Bit 1 : Periodic split transactions
Bit 2 : High-speed multi-transfer isochronous
All other bits should be set 0. (ushort)
parm:           int_ep_interval_min:Clamp high-speed Interrupt endpoints to a minimum polling interval.
0..1 = Use endpoint default
2..n = Minimum interval n microframes. Use powers of 2.
 (ushort)
parm:           cil_force_host:On a connector-ID status change, force Host Mode regardless of OTG state. (bool)

Michael
 
Top Bottom