nrf5340 usb device for audio

I have found that nrf5340 support the usb device function. It can be used for sound card which can receive the audio signal from the PC, and output the mic signal to PC.

And I have tested that function from the nrf5340_audio application.

My question is if we made a USB Docking, if i plug my device which uesd nrf5340 to the docking, can output music(for example, the i2s input to the nrf5340) to the docking which can convert it to analog signal so people can hear them through the wired headset.

Because i thought that first, may be the Docking shoud support the USB HOST function, and the second question is we need the nrf5340 to output the audio signal through the USB prot, not only the MIC signal, I don not know if there some limtations in that.

Thank you very much for helping.

Parents
  • Hello,

    I am not quite sure if I understand your topology correctly - you can indeed use the microphone on the nRF5340 LE Audio DK to output audio to a connected computer over USB, but the nRF5340 LE Audio can not serve as a USB Host.
    So, you are correct that you can have your nRF5340 LE Audio DK output the music to the docking (as digital, over USB), or it could output the audio as analog audio out through the headphone jack (by sending the digital audio to the onboard Cirrus Logic hardware codec DAC/DSP).

    Please elaborate on your intentions and topology if this did not fully answer your question.

    Best regards,
    Karl

  • Hello Karl,

    Thank you for your help. We plan to design an audio product with USB function and using battery. And we also want to design a docking for it, the docking can charging the device. So we need to consider whether it is possible to add a headphone jack on Docking so that users can listen to music through wired headphones. If we want to meet this requirement, we first need to evaluate whether it is possible to output music through the nrf5340 USB port.

    So, you are correct that you can have your nRF5340 LE Audio DK output the music to the docking (as digital, over USB).

    Does that means if the docking can work like PC(USB HOST), we can output the audio to it? You know, the nrf5340_audio application only can oputput the mic signal to PC. So I'm not sure if there are any limitations on USB role, such as USB devices can only being able to output MIC signal or if there are bandwidth limitations. Because we want to output the normal music signal, i think the resource requirment should be larger than mic.

    Thank you very much.

  • Hello,

    huma said:
    Thank you very much and looking forward for your reply.

    No problem at all, I am happy to help! :) 

    huma said:
    Fortunately, when evaluating this feature, we can first not consider the resource consumption of encoding and decoding functions, as the features on USB may only be applied locally.

    Does this mean that you intend to do the LC3 encoding and decoding on the USB host side, and then transfer it over to the nRF5340 for transmitting over LE Audio?

    huma said:
    Does this mean that nrf5340 has the opportunity to support multi-channel USB sound cards in this situation? If possible, could you please point out where to modify this part of the driver? After all, I haven't paid attention to this part before.

    Right now we are using two audio channels over USB (using USB Audio) which are bi-directional, and so we use 4 endpoints for this. This is the only configuration we regularly test, but so long as you have the bandwidth and processing for it then it should be fine to increase this as well as far as I can tell - my hesitation to decisively confirm this only stems from the fact that we only test with the stereo USB, and so I don't have any personal experience with additional channels all the way up to 8 channels.
    As far as I can tell there should be no issue with this, but I would recommend you to give this a try and let us know if you run into any issues with it.

    Best regards,
    Karl

  • Hello Kaarl

    Thank you for  your reply.

    I am sorry for the late reply due to the holiday.

    Can you tell me where the USB driver is in the code and where I can modify the number of audio channels on the USB device, so that I can save some time and try to modify it directly to verify.

    Thank you very much and looking forward for your reply.

  • Hello,

    huma said:
    I am sorry for the late reply due to the holiday.

    No worries at all - we will continue this whenever you have a chance! :) 

    huma said:
    Can you tell me where the USB driver is in the code and where I can modify the number of audio channels on the USB device, so that I can save some time and try to modify it directly to verify.

    The USB functionality used in the nRF5340 LE Audio reference application is contained in the audio_usb.c/.h files.
    You should also take a look in the kconfigs for the project to see which USB related configurations that are set there.

    Best regards,
    Karl

  • Hello, Karl

    Thank you very much for your reply.

    In the default sample, the Windows11 can recognized it:

    Then I have tried to add the "mic-channel-c;" to the dt overlay file.

    &hs_0 {
        mic-channel-c;
    };

    Then the windows can recognized it, but there is no Advanced page to check the channel:

    And I have checked the kconfigs in the project, but i found nothing about the channel settings. Also for the audio_usb.c/.h. I know if i add the channel, the file shoud be modified. But I want the Windows 11 can get the channel of my device first, even if it doesn't work.

    Thank you very much and looking forward for your reply.

  • Hello,

    Thank you for your patience with this.

    huma said:
    And I have checked the kconfigs in the project, but i found nothing about the channel settings. Also for the audio_usb.c/.h. I know if i add the channel, the file shoud be modified. But I want the Windows 11 can get the channel of my device first, even if it doesn't work.

    I am not sure that I understand what you mean by this - what changes have you currently made to the audio_usb.c/.h, and what were the specific purpose of those changes?

    Best regards,
    Karl

Reply
  • Hello,

    Thank you for your patience with this.

    huma said:
    And I have checked the kconfigs in the project, but i found nothing about the channel settings. Also for the audio_usb.c/.h. I know if i add the channel, the file shoud be modified. But I want the Windows 11 can get the channel of my device first, even if it doesn't work.

    I am not sure that I understand what you mean by this - what changes have you currently made to the audio_usb.c/.h, and what were the specific purpose of those changes?

    Best regards,
    Karl

Children
  • Hello,  Karl

    Thank you very much for your reply.

    I have only changed the dt overlay file, because the audio_usb.c/.h i found that there is only the audio signal process part.

    What I want to test now is how many audio channels my USB device can recognized by my PC. The first step is that I don't care if the audio part is working, so I think I should first modify the device information section of the USB device.

    The second step is that once the computer can correctly recognize the number of channels for the device I want, I can start modifying the audio part.

    So, for the first step, what should i do?

    Thank you very much and looking forward for your reply.

  •   , I've been following this thread with interest, wondering whether you'll be able to transceive all 8 I2S channels to the PC.

    I'm not sure if you're still having issues with mono/stereo signals, but here's something worth considering. While the CS47L63 has 2 stereo inputs (IN1 and IN2), only IN2 is wired for analog stereo line-in.

    CS47L63 IN2 stereo

    IN1 is wired to the digital mic, which is a mono signal and only outputs on the IN1L channel. When the PDM mic is selected, hw_codec.c writes register values that assign the silent IN1R channel to ASPTX2 I2S.

    CS47L63 IN1 mono

    If you want the PDM mic to fill both L/R I2S channels, you'll have to edit cs47l63_reg_conf.h so that IN1L is routed to both ASPTX1/2.

    CS47L63 IN1 dual mono

    cs47l63_reg_conf.h line 75:

    /* Send PDM MIC to I2S Tx */
    { CS47L63_ASP1TX1_INPUT1, 0x800010 },  // IN1L
    { CS47L63_ASP1TX2_INPUT1, 0x800011 },  // IN1R

    Change to:

    /* Send PDM MIC to I2S Tx */
    { CS47L63_ASP1TX1_INPUT1, 0x800010 },  // IN1L
    { CS47L63_ASP1TX2_INPUT1, 0x800010 },  // IN1L

    Hope this helps. Good luck, and keep us updated!

  • Hello,

    Thank you very much! But I haven't delved so deeply into your research yet. At present, I have not been able to make the computer recognize USB devices as multi-channel devices.  Once I achieve this goal, I may start researching how to handle the audio part.

    May I ask if you have a way for the computer to recognize that USB devices have multiple channels?As long as the computer can correctly recognize them, my first goal can be achieved.

    Thank you very much!

  • Unfortunately, I'm still extremely novice with Zephyr and nRF Connect, and don't yet know how to configure the USB peripheral at all. I've been following this thread hoping to learn from any progress you've made.

    My initial rabbit hole of study has been the CS47L63 DSP codec on the Audio DK, and I'm beginning to understand that well enough to authoritatively answer questions, but I can't help much with anything else.

    One of my future goals is to transceive 7.1 channel surround sound via I2S, but so far I've just barely learned to transmit one. Please post anything helpful you discover in your endeavors.

  • Hello, Karl.

    I'm sorry to bother you again, but may I ask if there is a way for my computer to recognize that my USB device(nrf5340 audio DK) has multi-channel characteristics, for example, i want to output to PC up to 4 or 6 channel mic signals, at least my PC need to recognize it has so much channel first. which is the foundation for me to continue working on it. Then i will to research how should i deal with the audio part.

    Thank you very much and looking forward for your reply.

Related