A3 and Google AOA mode

jonsmirl Post time 2019-1-4 10:36:15 | Show all posts  Close [Copy link]
2 3830
View: 3830|Reply: 2

A3 and Google AOA mode

 Close [Copy link]

7

threads

40

posts

195

credits

Senior Member

Rank: 2

credits
195
Post time 2018-11-3 09:58:17 | Show all posts |Read mode
Google AOA mode does not function on the A1 Pro. I'm hoping that it will work on the A3.
https://source.android.com/devices/accessories/protocol

There is a tiny program that will check if the mode functions correctly.
https://github.com/gibsson/linux-adk

When this program fails on the A1 Pro, you will see this in your Linux host logs...
95154.486707] usb 1-5.1: Product: A1_PRO
[95154.486713] usb 1-5.1: Manufacturer: A-gold
[95154.486718] usb 1-5.1: SerialNumber: 0123456789ABCDEF
[95156.647795] usb 1-5.1: USB disconnect, device number 41
[95157.017964] usb 1-5.1: new high-speed USB device number 42 using xhci_hcd
[95157.122812] usb 1-5.1: New USB device found, idVendor=18d1, idProduct=2d03
[95157.122823] usb 1-5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[95157.122830] usb 1-5.1: Product: A1_PRO
[95157.122836] usb 1-5.1: Manufacturer: A-gold
[95157.122841] usb 1-5.1: SerialNumber: 0123456789ABCDEF
[95157.124251] usb 1-5.1: 1:1: add audio endpoint 0x81
[95157.160158] usb 1-5.1: 1:1: usb_set_interface failed (-32)
[95157.161030] usb 1-5.1: 1:1: usb_set_interface failed (-32)
[95157.161851] usb 1-5.1: 1:1: usb_set_interface failed (-32)
[95157.163121] usb 1-5.1: 1:1: usb_set_interface failed (-32)
[95157.164489] usb 1-5.1: 1:1: usb_set_interface failed (-32)

Here's what the log looks like when it works...

[95584.714759] usb 1-2: Product: Pixel
[95584.714765] usb 1-2: Manufacturer: Google
[95584.714771] usb 1-2: SerialNumber: FA68Z0309184
[95586.782233] usb 1-2: USB disconnect, device number 48
[95587.309479] usb 1-2: new high-speed USB device number 49 using xhci_hcd
[95587.458468] usb 1-2: New USB device found, idVendor=18d1, idProduct=2d03
[95587.458478] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[95587.458485] usb 1-2: Product: Pixel
[95587.458490] usb 1-2: Manufacturer: Google
[95587.458496] usb 1-2: SerialNumber: FA68Z0309184
[95587.459886] usb 1-2: 1:1: add audio endpoint 0x82
----> A1 pro failed here
[95587.492151] usb 1-2: setting usb interface 1:1
[95587.495659] usb 1-2: setting usb interface 1:1
[95587.502216] usb 1-2: setting usb interface 1:1
[95587.506349] usb 1-2: Starting data EP @00000000d8f304ed
[95593.402794] usb 1-2: setting usb interface 1:1
[95593.403469] usb 1-2: Starting data EP @00000000d8f304ed
jonsmirl@ares:~/aosp/linux-adk$


Google AoA mode is used by docking stations with external speakers. It is also used by older cars which pre-date Android Auto.

7

threads

40

posts

195

credits

Senior Member

Rank: 2

credits
195
 Author| Post time 2018-12-7 00:58:56 | Show all posts
Edited by jonsmirl at 2018-12-7 01:05  

Unfortunately AoA mode is still broken in the A3. This is a bug in the MTK kernel driver for USB audio. The dock is failing to open the USB audio protocol over the USB port.   This works on other Mediatek chips, of the phones I have only the MT6739 fails. Our application is a device test farm, redirecting the audio over a USB audio connection is how we test the sound output of the device under test. Because of this bug we can't run any tests on Umidigi A3 or A1.

[223786.572463] usb 1-1: new high-speed USB device number 13 using xhci_hcd
[223786.721641] usb 1-1: New USB device found, idVendor=0e8d, idProduct=2008
[223786.721643] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[223786.721645] usb 1-1: Product: A3
[223786.721647] usb 1-1: Manufacturer: UMIDIGI
[223786.721648] usb 1-1: SerialNumber: A3201809012173
[223847.009118] usb 1-1: reset high-speed USB device number 13 using xhci_hcd
[223847.285054] usb 1-1: reset high-speed USB device number 13 using xhci_hcd
[223880.928622] usb 1-1: USB disconnect, device number 13
[223881.313053] usb 1-1: new high-speed USB device number 14 using xhci_hcd
[223881.461820] usb 1-1: New USB device found, idVendor=18d1, idProduct=2d04
[223881.461826] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[223881.461830] usb 1-1: Product: A3
[223881.461834] usb 1-1: Manufacturer: UMIDIGI
[223881.461837] usb 1-1: SerialNumber: A3201809012173
[223881.496477] usbcore: registered new interface driver snd-usb-audio
[223881.518553] usb 1-1: 2:1: usb_set_interface failed (-32)
[223881.520081] usb 1-1: 2:1: usb_set_interface failed (-32)
[223881.521077] usb 1-1: 2:1: usb_set_interface failed (-32)
[223881.522552] usb 1-1: 2:1: usb_set_interface failed (-32)
[223881.523878] usb 1-1: 2:1: usb_set_interface failed (-32)



7

threads

40

posts

195

credits

Senior Member

Rank: 2

credits
195
 Author| Post time 2019-1-4 10:36:15 | Show all posts
Can you please forward this over to your software developers....

When the kernel for the A3 was built, did USB audio support get turned off accidentally?
This might not be working simply because support for it was turned off.

It is supposed to be turned on:
jonsmirl@ares:~/aosp/mtk8/kernel-4.4/arch/arm64/configs$ grep SND_USB_AUDIO *
evb6771_64_emmc_debug_defconfig:CONFIG_SND_USB_AUDIO=y
evb6771_64_emmc_defconfig:CONFIG_SND_USB_AUDIO=y
evb6771_64_emmc_mhl_debug_defconfig:CONFIG_SND_USB_AUDIO=y
evb6771_64_emmc_mhl_defconfig:CONFIG_SND_USB_AUDIO=y
k39tv1_64_bsp_debug_defconfig:CONFIG_SND_USB_AUDIO=y
k39tv1_64_bsp_defconfig:CONFIG_SND_USB_AUDIO=y
k63v1_64_bsp_debug_defconfig:CONFIG_SND_USB_AUDIO=y

Turning on USB audio enables SND_PCM

config SND_USB_AUDIO
        tristate "USB Audio/MIDI driver"
        select SND_HWDEP
        select SND_RAWMIDI
        select SND_PCM
        select BITREVERSE

These #Ifdef then turn on the AOA USB audio support.

jonsmirl@ares:~/aosp/mtk8/kernel-4.4/drivers/usb/gadget$ grep PCM android.c
#ifdef CONFIG_SND_PCM
#ifdef CONFIG_SND_PCM

The audio interface is listed in the USB descriptors, when our code tries to turn it on, it errors out with -EPIPE. That would happen if the code in android.c was turned off by the IFDEFs and not built. This is code should always be turned on except in something like a watch with no USB audio.

Bus 001 Device 029: ID 18d1:2d05 Google Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x18d1 Google Inc.
  idProduct          0x2d05
  bcdDevice            2.23
  iManufacturer           1 A-gold
  iProduct                2 A1_PRO
  iSerial                 3 0123456789ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          156
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          4 accessory_audiosource_adb
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      0
      iInterface              5 Android Accessory Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0
      iInterface              0
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength           40
        bInCollection           2
        baInterfaceNr( 0)       1
        baInterfaceNr( 1)       2
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          2
        bSourceID               2
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 2
        bSourceID               1
        bControlSize            2
        bmaControls( 0)      0x00
        bmaControls( 0)      0x00
        iFeature                0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        44100
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         1 Milliseconds
          wLockDelay              1 Milliseconds
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass     66
      bInterfaceProtocol      1
      iInterface              6 ADB Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)






You have to log in before you can reply Login | WELCOME TO UMIDIGI COMMUNITY

Points Rules

Quick Reply Top Back to list