Async USB Dac Experiments - testers wanted...

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Triode
    Senior Member
    • Apr 2005
    • 8410

    Async USB Dac Experiments - testers wanted...

    EDIT: The instructions here no longer work - please see the Enhanced Digital Output app for support of usb dacs. These experiments are closed except for tests on specific dacs to improve support.



    As reported by John S I've been looking at support for async usb dacs connected to the Usb port of Touch. I believe I've made some progress and have some changes to the touch firmware which I believe are worth sharing. At present this is really a proof of concept and I am looking for testers who have an async usb dac (usb 1.1 devices for the moment) and are willing to try some tests.

    I've been testing these modifications with a usb 1 dac (Audiolab MDAC) - it will play at 44.1 and 48k sampling rates with my modified kernel. (The dac is capable of 96k, but to make it work with Touch at present I've modified the kernel to only support these lower rates)

    The process for installing the updates is slightly involved, but should all be able to be done from the normal user interface. Instructions below:

    1) Update to latest released Touch firmware
    2) Perform factory reset to ensure any previous usb mods are removed
    3) Add the following new repository url to the LMS Web settings page: Settings, Plugins (additonal repositories at bottom of page), press apply
    http://triodeapplets.googlecode.com/...sbtestrepo.xml (copy the link not text to make sure this forum does not give you a bad url)
    4) Go to Settings, Advanced, Applet Installer on the player, unselect "Recommended Applets Only" and two new applets should appear in the list: Kernel Updater and USB Audio Ouput - install them one at a time (touch will reboot each time you install one)
    5) Go to Settings, Advanced, Kernel Updater and select the kernel to install. Select one of the test kernels (See below), then read the warning text and select "Install". Touch should download a kernel and reboot, when it reboots it should include the text "USB Test Kernel" on the startup screen. If you do not see this then you are not running the test kernel and you should investigate why.
    6) Ensure USB Dac is pluged in and turned on
    7) Go to Setttings, Advanced, USB Audio Output and see if your USB Dac appears in the menu - if so select it (touch will reboot)
    8) Touch should now be using the selected USB device for its audio output - to see the status return to the Settings, Advanced, USB Audio Output menu and select the device - this should show the current status of any playing stream

    Important - before you update to the standard firmware again, you must reselect the Default output on the USB Audio Output menu otherwise the touch will continually reboot. [If you get to this point, press and hold the reset button to perform a factory reset and it should boot correctly]

    Please report your findings here - interested in which dacs and what works/doesn't.

    Update:

    There are now three test kernels:

    Test Kernel #1 - restricts the output rate to 44/48k sampling rates by overriding the rate at which the dac asks for output. It may allow async usb to work at these rates with a dac directly connected to your Touch. Known working devices:
    - Audiolab M-DAC
    - Audiolab 8200CDQ

    Test Kernel #2 - this supports up to 96k sampling rate, but may require an external high speed usb hub between Touch and your dac. Known working devices:
    - Audiolab M-DAC with external high speed hub
    - Music Streamer II with external high speed hub

    Test Kernel #3 - this includes most of the changes to the linux usbaudio driver to bring it up to date with ~April 2011. It may support a wider range of dacs.
    Known working device:
    - Audiolab M-DAC (USB audio class 1) with external high speed hub
    - Audiolab M-DAC with external high speed hub
    - Music Streamer II with external high speed hub
    - Audiolab 8200CDQ with external high speed hub
    - AudioEngine D1 with external high speed hub

    Test Kernel #4 - as Kernel #3 but with more internal debugging messages (for expert users)
    Last edited by Triode; 2012-05-01, 20:37.
  • paul.raulerson
    Member
    • Oct 2011
    • 62

    #2
    Cool!

    Will install later this afternoon, can't shake feeding the family first...

    -Paul

    Comment

    • dynaudiorules
      Member
      • Jul 2007
      • 45

      #3
      Would step 3 be done on the Touch itself or on the Server side???

      I ask because I dont see the option you listed shown after I select Settings->Plugins on the Server side.

      Don't know or can't find LMS Web setting page either.
      Last edited by dynaudiorules; 2012-01-29, 22:01.
      Dynobot's Audio

      Comment

      • Triode
        Senior Member
        • Apr 2005
        • 8410

        #4
        Originally posted by dynaudiorules
        Would step 3 be done on the Touch itself or on the Server side???

        I ask because I dont see the option you listed shown after I select Settings->Plugins on the Server side.

        Don't know or can't find LMS Web setting page either.
        Server side - its on the settings, plugin tab at the bottom of the page. Note also that the url text is compressed by this forum it should be:
        Code:
        http://triodeapplets.googlecode.com/svn/trunk/usbtestrepo.xml

        Comment

        • dynaudiorules
          Member
          • Jul 2007
          • 45

          #5
          Okay found out that Additional Repositories does not show on Linux servers.

          I used my Windows Server.

          I am using a Musical Fidelity V-Link, I get very faint pops about 1 min apart. Otherwise it works great.
          Dynobot's Audio

          Comment

          • Triode
            Senior Member
            • Apr 2005
            • 8410

            #6
            Originally posted by dynaudiorules
            Okay found out that Additional Repositories does not show on Linux servers.
            Shows on my linux server...

            I am using a Musical Fidelity V-Link, I get very faint pops about 1 min apart. Otherwise it works great.
            Does the instantaneous frequency update on the Usb Audio Output info display on touch? It could be that your dac has a smaller buffer than mine. This kernel overrides the rate at which the dac asks for data to make sure the feedback packets arrive. I will add more debugging info to the next kernel to help us understand more. Lets get some more reports first though.

            Comment

            • dynaudiorules
              Member
              • Jul 2007
              • 45

              #7
              Originally posted by Triode
              Shows on my linux server...


              Does the instantaneous frequency update on the Usb Audio Output info display on touch? It could be that your dac has a smaller buffer than mine. This kernel overrides the rate at which the dac asks for data to make sure the feedback packets arrive. I will add more debugging info to the next kernel to help us understand more. Lets get some more reports first though.
              Yes if I select the V-Link on the Touch I can see all the information.

              I also notice that it skips more often if I play with the Touch's Menus....

              Just let me know what info you need and I will post it
              Dynobot's Audio

              Comment

              • Triode
                Senior Member
                • Apr 2005
                • 8410

                #8
                Originally posted by dynaudiorules
                Yes if I select the V-Link on the Touch I can see all the information.
                Does it say the output endpoint is ASYNC?

                Also does the Momentary freq update (the page is refreshed once a second). On my dac every couple of seconds this updates to a value either side of the nominal frequency.

                Comment

                • dynaudiorules
                  Member
                  • Jul 2007
                  • 45

                  #9
                  Originally posted by Triode
                  Does it say the output endpoint is ASYNC?

                  Also does the Momentary freq update (the page is refreshed once a second). On my dac every couple of seconds this updates to a value either side of the nominal frequency.
                  Yes it says Async

                  No update on the Momentary freq

                  44084 Hz (0x2c. 15a0)

                  If I switch songs it updates

                  44113 Hz (0x2c. 1cf8)

                  Edit: Okay it took awhile but yes it updates now its at 44098 Hz
                  Last edited by dynaudiorules; 2012-01-29, 23:24.
                  Dynobot's Audio

                  Comment

                  • Triode
                    Senior Member
                    • Apr 2005
                    • 8410

                    #10
                    Originally posted by dynaudiorules
                    Yes it says Async

                    No update on the Momentary freq

                    44084 Hz (0x2c. 15a0)

                    If I switch songs it updates

                    44113 Hz (0x2c. 1cf8)
                    Hum - async is not working then - should be being updated.. Are you able to ssh into the touch and type "dmesg" - what does it say for the last few lines while it is playing?

                    Comment

                    • dynaudiorules
                      Member
                      • Jul 2007
                      • 45

                      #11
                      Originally posted by Triode
                      Hum - async is not working then - should be being updated.. Are you able to ssh into the touch and type "dmesg" - what does it say for the last few lines while it is playing?
                      r6:00000002 r5:c03f6c78 r4:c7e0fa00 r3:c025ce58
                      [<c0245498>] (snd_pcm_do_prepare+0x0/0x34) from [<c0244fc4>] (snd_pcm_action_single+0x40/0x6c)
                      r4:c7e0fa00 r3:c0245498
                      [<c0244f84>] (snd_pcm_action_single+0x0/0x6c) from [<c02463d4>] (snd_pcm_action_nonatomic+0x4c/0x64)
                      r7:00000002 r6:00000002 r5:c7e0fa00 r4:c03f6c78
                      [<c0246388>] (snd_pcm_action_nonatomic+0x0/0x64) from [<c0248968>] (snd_pcm_common_ioctl1+0x710/0x100c)
                      r6:c7c7aa1c r5:00000000 r4:c7e0fa00 r3:00000000
                      [<c0248258>] (snd_pcm_common_ioctl1+0x0/0x100c) from [<c0249ac8>] (snd_pcm_playback_ioctl1+0x414/0x438)
                      [<c02496b4>] (snd_pcm_playback_ioctl1+0x0/0x438) from [<c0249b24>] (snd_pcm_playback_ioctl+0x38/0x3c)
                      r8:c002ec64 r7:0000000c r6:00004140 r5:00023060 r4:c7136e20
                      [<c0249aec>] (snd_pcm_playback_ioctl+0x0/0x3c) from [<c00ae8c0>] (vfs_ioctl+0x34/0x94)
                      [<c00ae88c>] (vfs_ioctl+0x0/0x94) from [<c00aebe8>] (do_vfs_ioctl+0x2c8/0x2e4)
                      r6:c7153e30 r5:00023060 r4:c7136e20 r3:00002000
                      [<c00ae920>] (do_vfs_ioctl+0x0/0x2e4) from [<c00aec44>] (sys_ioctl+0x40/0x64)
                      r6:00004140 r5:00023060 r4:c7136e20
                      [<c00aec04>] (sys_ioctl+0x0/0x64) from [<c002eae0>] (ret_fast_syscall+0x0/0x2c)
                      r7:00000036 r6:00019970 r5:0002e320 r4:00024828
                      #
                      Dynobot's Audio

                      Comment

                      • Triode
                        Senior Member
                        • Apr 2005
                        • 8410

                        #12
                        That doesn't look right - could you capture the entire dmesg and post here or mail to me?

                        Comment

                        • dynaudiorules
                          Member
                          • Jul 2007
                          • 45

                          #13
                          I sent you a PM with more of the result from the dmesg command
                          Dynobot's Audio

                          Comment

                          • dynaudiorules
                            Member
                            • Jul 2007
                            • 45

                            #14
                            Originally posted by Triode
                            That doesn't look right - could you capture the entire dmesg and post here or mail to me?
                            email sent
                            Dynobot's Audio

                            Comment

                            • paul.raulerson
                              Member
                              • Oct 2011
                              • 62

                              #15
                              Results

                              Installed and tried on a MF VLink, A Wavelength CoSecant, and a Peachtree DAC*IT.

                              No synch to the VLink or CoSecant.

                              The Peachtree played the music cleanly, but the music "dragged" if that makes any sense.

                              By the way, install was flawless and the uninstall was also flawless. Good work, please don't get discouraged!

                              -Paul

                              Comment

                              Working...