Android <-> ADC USB isolation

TNT

Member
Joined 2003
Paid Member
Remembered that Henrik provided a command to list all devices...

Code:
(base) MBPr@MBP3 ~ % /Users/MBPr/iCloud\ Drive\ \(Archive\)\ -\ 1/Documents/Ca+Di/Camilla/tools/listdevices ; exit;
Available hosts:
  [CoreAudio]
CoreAudio
  Default Input Device:
    Ok("BlackHole 2ch")
  Default Output Device:
    Ok("MacBook Pro Speakers")
  Devices:


  Device: "Record Interface"
  ============================================================

    Capture
    ------------------------------------------------------------
    Default input stream config:
      channels: 2, samplerate: 96000, format: FLOAT32LE
    All supported input stream configs:
      channels: 2, samplerate min: 44100 max: 44100, format: FLOAT32LE
      channels: 2, samplerate min: 48000 max: 48000, format: FLOAT32LE
      channels: 2, samplerate min: 88200 max: 88200, format: FLOAT32LE
      channels: 2, samplerate min: 96000 max: 96000, format: FLOAT32LE
      channels: 2, samplerate min: 176400 max: 176400, format: FLOAT32LE
      channels: 2, samplerate min: 192000 max: 192000, format: FLOAT32LE
      channels: 2, samplerate min: 352800 max: 352800, format: FLOAT32LE
      channels: 2, samplerate min: 384000 max: 384000, format: FLOAT32LE
      channels: 2, samplerate min: 705600 max: 705600, format: FLOAT32LE
      channels: 2, samplerate min: 768000 max: 768000, format: FLOAT32LE

    Playback
    ------------------------------------------------------------


 ........


  Device: "MacBook Pro Microphone"
  ============================================================

    Capture
    ------------------------------------------------------------
    Default input stream config:
      channels: 1, samplerate: 44100, format: FLOAT32LE
    All supported input stream configs:
      channels: 1, samplerate min: 44100 max: 44100, format: FLOAT32LE
      channels: 1, samplerate min: 48000 max: 48000, format: FLOAT32LE
      channels: 1, samplerate min: 88200 max: 88200, format: FLOAT32LE
      channels: 1, samplerate min: 96000 max: 96000, format: FLOAT32LE

    Playback
    ------------------------------------------------------------


  Device: "MacBook Pro Speakers"
  ============================================================

    Capture
    ------------------------------------------------------------

    Playback
    ------------------------------------------------------------
    Default output stream config:
      channels: 2, samplerate: 44100, format: FLOAT32LE
    All supported output stream configs:
      channels: 2, samplerate min: 44100 max: 44100, format: FLOAT32LE
      channels: 2, samplerate min: 48000 max: 48000, format: FLOAT32LE
      channels: 2, samplerate min: 88200 max: 88200, format: FLOAT32LE
      channels: 2, samplerate min: 96000 max: 96000, format: FLOAT32LE


That all lists as float32 is a bit strange... no? I mean the output for speaker...

//
 

TNT

Member
Joined 2003
Paid Member
Now "Adjust" behaves a little different....

exsactly.jpg


//
 

TNT

Member
Joined 2003
Paid Member
Thanks!

ioreg -p IOUSB -l -w 0

gave for 24/384 :

Code:
+-o E1DA Cosmos ADC PCM32/384@00140000  <class IOUSBHostDevice, id 0x100054c88, registered, matched, active, busy 0 (41 ms), retain 46>
  |       {
  |         "kUSBSerialNumberString" = "CTUA..."
  |         "bDeviceClass" = 239
  |         "bDeviceSubClass" = 2
  |         "iSerialNumber" = 3
  |         "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  |         "iProduct" = 2
  |         "USB Serial Number" = "CTUA1..."
  |         "USB Vendor Name" = "E1DA"
  |         "USBSpeed" = 3
  |         "IOPowerManagement" = {"PowerOverrideOn"=Yes,"DevicePowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=32768,"MaxPowerState"=2,"DriverPowerState"=0}
  |         "bNumConfigurations" = 1
  |         "kUSBProductString" = "E1DA Cosmos ADC PCM32/384"
  |         "Authenticated" = Yes
  |         "kUSBVendorString" = "E1DA"
  |         "USB Product Name" = "E1DA Cosmos ADC PCM32/384"
  |         "iManufacturer" = 1
  |         "idVendor" = 12230
  |         "Device Speed" = 2
  |         "kUSBCurrentConfiguration" = 1
  |         "idProduct" = 24594
  |         "bcdDevice" = 513
  |         "UsbDeviceSignature" = <c62f126001024354554131383131313941ef0201010120010220030000fff000>
  |         "sessionID" = 15470758330475
  |         "USB Address" = 4
  |         "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |         "USBPortType" = 0
  |         "bDeviceProtocol" = 1
  |         "locationID" = 1310720
  |         "kUSBAddress" = 4
  |         "bcdUSB" = 512
  |         "IOGeneralInterest" = "IOCommand is not serializable"
  |         "bMaxPacketSize0" = 64
  |         "iAPAuthenticator" = "pid 70026, accessoryd"
  |       }

and setup for for 16/44:

Code:
 +-o E1DA Cosmos ADC PCM32/384@00140000  <class IOUSBHostDevice, id 0x100054c88, registered, matched, active, busy 0 (41 ms), retain 111>
  |       {
  |         "kUSBSerialNumberString" = "CTU..."
  |         "bDeviceClass" = 239
  |         "bDeviceSubClass" = 2
  |         "iSerialNumber" = 3
  |         "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  |         "iProduct" = 2
  |         "USB Serial Number" = "CTUA...."
  |         "USB Vendor Name" = "E1DA"
  |         "USBSpeed" = 3
  |         "IOPowerManagement" = {"PowerOverrideOn"=Yes,"DevicePowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=32768,"MaxPowerState"=2,"DriverPowerState"=0}
  |         "bNumConfigurations" = 1
  |         "kUSBProductString" = "E1DA Cosmos ADC PCM32/384"
  |         "Authenticated" = Yes
  |         "kUSBVendorString" = "E1DA"
  |         "USB Product Name" = "E1DA Cosmos ADC PCM32/384"
  |         "iManufacturer" = 1
  |         "idVendor" = 12230
  |         "Device Speed" = 2
  |         "kUSBCurrentConfiguration" = 1
  |         "idProduct" = 24594
  |         "bcdDevice" = 513
  |         "UsbDeviceSignature" = <c62f126001024354554131383131313941ef0201010120010220030000fff000>
  |         "sessionID" = 15470758330475
  |         "USB Address" = 4
  |         "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |         "USBPortType" = 0
  |         "bDeviceProtocol" = 1
  |         "locationID" = 1310720
  |         "kUSBAddress" = 4
  |         "bcdUSB" = 512
  |         "IOGeneralInterest" = "IOCommand is not serializable"
  |         "bMaxPacketSize0" = 64
  |         "iAPAuthenticator" = "pid 70026, accessoryd"
  |       }

Could not detect any difference....

But as you can see, I'm in no way insightful in these matters...

//
 

TNT

Member
Joined 2003
Paid Member
So trying homebrew.... but it doesn't seem to work. Install went without any hassles as far I could see...

Code:
==> Summary
🍺  /opt/homebrew/Cellar/usbutils/017: 13 files, 338.6KB
==> Running `brew cleanup usbutils`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Caveats
==> usbutils
usbhid-dump requires either proper code signing with com.apple.vm.device-access
entitlement or root privilege
(base) MBPr@MBP3 ~ % usbutils
zsh: command not found: usbutils
(base) MBPr@MBP3 ~ %
(base) MBPr@MBP3 ~ % usb-devices
Error: directory /sys/bus does not exist; is sysfs mounted?
(base) MBPr@MBP3 ~ % usb-devices
Error: directory /sys/bus does not exist; is sysfs mounted?
(base) MBPr@MBP3 ~ % usbhid-dump
No matching HID interfaces
(base) MBPr@MBP3 ~ % lsusb
(base) MBPr@MBP3 ~ % lsusb.py
 WARNING: Failure to read usb.ids
Traceback (most recent call last):
  File "/opt/homebrew/bin/lsusb.py", line 558, in <module>
    main(sys.argv)
  File "/opt/homebrew/bin/lsusb.py", line 554, in main
    read_usb()
  File "/opt/homebrew/bin/lsusb.py", line 481, in read_usb
    for dirent in os.listdir(prefix):
FileNotFoundError: [Errno 2] No such file or directory: '/sys/bus/usb/devices/'
(base) MBPr@MBP3 ~ %
(base) MBPr@MBP3 ~ % usbhid-dump
No matching HID interfaces
(base) MBPr@MBP3 ~ % sudo usbhid-dump
Password:
No matching HID interfaces
(base) MBPr@MBP3 ~ %

errors look like macOS problems/deviations?


//
 

TNT

Member
Joined 2003
Paid Member
OK - found this: https://github.com/jlhonora/lsusb/releases/tag/1.0

and run: lsusb -v

.... a lot that I dont think has anything to do with the ADC.... but then:


Code:
Bus 000 Device 004: ID 2fc6:6012
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 [unknown]
  bDeviceSubClass         2 [unknown]
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x2fc6
  idProduct          0x6012
  bcdDevice            2.01
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0152
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          1 [unknown]
      bFunctionSubClass       0 [unknown]
      bFunctionProtocol      32
      iFunction               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 [unknown]
      bInterfaceSubClass      1 [unknown]
      bInterfaceProtocol     32
      iInterface              2 E1DA Cosmos ADC PCM32/384
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               4
        wTotalLength       0x0040
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               15
        bmAttributes            3 Internal programmable clock
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource            0
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID            10
        wTerminalType      0x0603 Line Connector
        bAssocTerminal          0
        bCSourceID             15
        bNrChannels             2
        bmChannelConfig    0x00000003
          Front Left (FL)
          Front Right (FR)
        iChannelNames           0
        bmControls         0x0000
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                11
        bSourceID              10
        bmaControls(0)     0x0000000f
          Mute Control (read/write)
          Volume Control (read/write)
        bmaControls(1)     0x0000000c
          Volume Control (read/write)
        bmaControls(2)     0x0000000c
          Volume Control (read/write)
        iFeature                0
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            13
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        bCSourceID             15
        bmControls         0x0000
        iTerminal               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 [unknown]
      bInterfaceSubClass      2 [unknown]
      bInterfaceProtocol     32
      iInterface              5 Record Interface
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 [unknown]
      bInterfaceSubClass      2 [unknown]
      bInterfaceProtocol     32
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          13
        bmControls           0x05
          Active Alternate Setting Control (read-only)
          Valid Alternate Setting Control (read-only)
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000003
          Front Left (FL)
          Front Right (FR)
        iChannelNames           0
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            2
        bBitResolution         16
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0308  1x 776 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass         1 [unknown]
      bInterfaceSubClass      2 [unknown]
      bInterfaceProtocol     32
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          13
        bmControls           0x05
          Active Alternate Setting Control (read-only)
          Valid Alternate Setting Control (read-only)
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000003
          Front Left (FL)
          Front Right (FR)
        iChannelNames           0
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            3
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0308  1x 776 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass         1 [unknown]
      bInterfaceSubClass      2 [unknown]
      bInterfaceProtocol     32
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          13
        bmControls           0x05
          Active Alternate Setting Control (read-only)
          Valid Alternate Setting Control (read-only)
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             2
        bmChannelConfig    0x00000003
          Front Left (FL)
          Front Right (FR)
        iChannelNames           0
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         32
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0308  1x 776 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass         1 [unknown]
      bInterfaceSubClass      2 [unknown]
      bInterfaceProtocol     32
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          13
        bmControls           0x05
          Active Alternate Setting Control (read-only)
          Valid Alternate Setting Control (read-only)
        bFormatType             1
        bmFormats          0x80000000
        bNrChannels             2
        bmChannelConfig    0x00000003
          Front Left (FL)
          Front Right (FR)
        iChannelNames           0
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         32
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0308  1x 776 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 [unknown]
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              7 HID Interface
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      29
          Report Descriptors:
            ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 [unknown]
      bInterfaceSubClass    240 [unknown]
      bInterfaceProtocol      0
      iInterface              8 iAP Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x07  EP 7 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x88  EP 8 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          239 [unknown]
  bDeviceSubClass         2 [unknown]
  bDeviceProtocol         1
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: No such file or directory
Device Status:     0x0001
  Self Powered


"AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24"

?

//
 
Last edited:
Excellent, that's exactly the output needed.
.... a lot that I dont think has anything to do with the ADC
That's because you did not specify the VID PID of your device in the -d parameter (as written in https://www.diyaudio.com/community/threads/android-adc-usb-isolation.413723/post-7706383 ) and details of all USB devices were listed.

The descriptors say that Cosmos has 4 altsettings. Altsets 1-3 of PCM format for 16bit, 24bit (in 3 bytes), 32bit, and an altset 4 of unknown format 0x80000000 for 32bit (probably DSD, but I doubt the ADC can use that altsetting).
 
E.g. step by step:

1. confirming the device works in a regular OS (like your mac), direct connection, those formats you want.
2. dtto, with your isolation rig

If the above works OK, most likely your recording app has issues. IIUC it implements an UAC2 driver in user space, no easy job, it may be buggy.