element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum PJSIP/PJSUA with Wolfson audio card
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 15 replies
  • Subscribers 667 subscribers
  • Views 2711 views
  • Users 0 members are here
  • raspberry
  • audio
  • wolfson_pi
  • pi
  • raspberry_pi
  • raspeberry_pi_accessories
  • pjsip
  • pjsua
Related

PJSIP/PJSUA with Wolfson audio card

Former Member
Former Member over 11 years ago

I am trying to get a SIP client running on my PI with Wolfson audio card.

 

I can use aplay and arecord, work great but when I set up a call with PJSUA I get the following errors:

 

07:14:34.698pjsua_app.c  ..Turning sound device ON
07:14:34.698pjsua_aud.c  ..Opening sound device PCM@16000/1/20ms
07:14:34.707 alsa_dev.c  ...ALSA lib pcm_hw.c:326:(snd_pcm_hw_hw_params) SNDRV_PCM_IOCTL_HW_PARAMS failed (-22): Invalid argument
07:14:34.707pjsua_app.c  ..Turning sound device ON
07:14:34.707pjsua_aud.c  ..Opening sound device PCM@44100/1/20ms
07:14:35.292ec0x14005a8  ...Echo suppressor created, clock_rate=44100, channel=1, samples per frame=882, tail length=200 ms, latency=100 ms

07:14:35.293  pjsua_media.c  .Call 0: initializing media..

07:14:35.297 alsa_dev.c  ALSA lib pcm_hw.c:587:(snd_pcm_hw_start) SNDRV_PCM_IOCTL_START failed (-12): Cannot allocate memory

 

Anyone that can guide me in the right direction on how to get this running?

 

Best Regards

  • Sign in to reply
  • Cancel
  • shabaz
    0 shabaz over 11 years ago

    I wonder if it is a bitrate issue. A google for that error suggests it might be, but it was unclear.

    16000 is possibly unusual (I'm no expert). 8000 is often more likely. You could check your SIP software config file to see if you can set the bitrates used to something else.

    I could be completely wrong, but it is worth a try.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to shabaz

    Hi, thank you for the response. I could not configre this so I had to do some hard-coding. Given that I wrote the code correctly it did unfortunately not help.

     

    08:34:18.298    pjsua_app.c !.Turning sound device ON

    08:34:18.303    pjsua_aud.c !.Opening sound device PCM@8000/1/20ms

    08:34:18.311     alsa_dev.c  ..ALSA lib pcm_hw.c:326:(snd_pcm_hw_hw_params) SNDRV_PCM_IOCTL_HW_PARAMS failed (-22): Invalid argument

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago

    Same situation for me. I have a voice app which normally runs in 8k mode. The app supports the rates 8k, 16k and 48k, but only 48k works. There is no advantage for the voice processing from using 48k, but it unnecessarily increases the CPU load.

     

    It would be nice to get some feedback from Wolfson what sampling rates will be supported by future driver releases (on the analogue line in/out connectors).

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago
    Thanks for your post on the sample rate support for the ADC and DAC paths (specifically the analogue input and output paths).
     
    I can confirm your observation on the sample rate limitation. From our perspective it wasn’t the intention to limit the audio ADC and DAC sample rates to above 32k.
     
    At the moment we are investigating an update to the drivers which will allow full 8k to 192k support for the analogue inputs and outputs.
    We will keep you posted on progress.
     
    Thanks.
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago

    I too have been bitten by the sample rate bug...

    I have modified my ~/.asoundrc quite a bit in order to be able to record 1-channel at 8kHz and 16kHz.

    I'm using ALSA's built-in re-sampling capabilities.

     

    This is not for those who like to enjoy HD audio! The sound card operates at 48kHz/16bit at all times.

    Everything is re-sampled and converted up or down as needed.

    --

    Ragnar

     

    #######################################################################
    #
    # Use libsamplerate instead of internal resampler.
    # You might have to: sudo apt-get install libasound2-plugins
    # Or just comment out the next line if the internal one is good enough for your needs.
    defaults.pcm.rate_converter "samplerate"
    
    ######################################################################
    #
    # Wolfson Audio Card for Raspberry Pi
    #
    pcm.wolfson_pi_soundcard {
        type hw
        card sndrpiwsp
        device 0
    }
    # Create a Master volume control
    pcm.softvol {
        type            softvol
        slave {
            pcm         "pduplex"
        }
        control {
            name        "Master"
            card        0
        }
    }
    
    pcm.!default  {
        type           asym
        playback.pcm   "plug:softvol"
        capture.pcm    "pduplex"
    }
    
    #####################################################################
    #
    # Mixing and resampling goodness :-)
    #
    # Several clients can record and play back simultaneously.
    # The dmix and dsnoop plugins operate at 48kHz by default, i.e. the sound card will be kept at 48kHz at all times.
    # All playback streams are converted to 2 channels/48kHz/16bit.
    # All recording streams are converted from the card's 2 channels/48kHz/16bit
    # to the requested number of channels, sample rate and bit depth.
    
    # We define one pcm device called "playmixer" for playback.
    pcm.playmixer {
            ipc_key 140324  # Any number will do, as long as it's unique in the system.
            ipc_key_add_uid true
            type dmix
            slave.pcm "wolfson_pi_soundcard"
    }
    
    # Define another one called "recmixer" for capture.
    # The sound card will run at 48kHz and input is resampled to the requested rate.
    pcm.recmixer {
            ipc_key 140325
            ipc_key_add_uid true
            type dsnoop
            slave.pcm "wolfson_pi_soundcard"
    }
    
    # Define a duplex device, with both in- and outputs.
    pcm.duplex {
            type asym
            playback.pcm "playmixer"
            capture.pcm "recmixer"
    }
    
    # Add a "plug" plugin for the above "duplex" device.
    # This is where all the converting takes place.
    # Sample rate, number of channels, bit depth.
    # By the way, who thought that "plug" was a good name for a plugin?
    #
    # Use this device for all your playback and recording resampling needs.
    pcm.pduplex {
            type plug
            slave.pcm "duplex"
    }
    
    # A ctl device to keep xmms happy
    ctl.pduplex {
            type hw
            card 0
    }
    
    # A DSP to keep the alsa-oss layer happy:
    pcm.dsp0 {
            type plug
            slave.pcm "duplex"
    }
    
    ctl.mixer0 {
            type hw
            card 0
    }

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    HI Ragnar

     

    I use your .asoundrc, and the wolfson PI Card works, but I Can't reproduce the files this is the error

     

    root@raspberrypi:/home/pi/pjproject-2.2.1/pjsip-apps/bin# aplay PJSYSTEST_TESTREC.WAV               Playing WAVE 'PJSYSTEST_TESTREC.WAV' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    aplay: set_params:1145: Unable to install hw params:

    ACCESS:  RW_INTERLEAVED

    FORMAT:  S16_LE

    SUBFORMAT:  STD

    SAMPLE_BITS: 16

    FRAME_BITS: 16

    CHANNELS: 1

    RATE: 8000

    PERIOD_TIME: 125000

    PERIOD_SIZE: 1000

    PERIOD_BYTES: 2000

    PERIODS: 4

    BUFFER_TIME: 500000

    BUFFER_SIZE: 4000

    BUFFER_BYTES: 8000

    TICK_TIME: 0

     

    Can the Wolfson PI Audio Card play files with 8000hz, this is a critical point in the asterisk communication because the principal audio codecs run to 8000hz. do you know?

     

    I'm graceful with your answer

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    The card itself (or rather its drivers) cannot record or play back at 8 kHz.

    Using my .asoundrc you should be able to record and play back at any sample rate and bit depth.

     

    ragnar@ob3:~/tmp$ arecord -d 10 -f S16_LE -v testing16.wav

    Recording WAVE 'testing16.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    Plug PCM: Rate conversion PCM (48000, sformat=S16_LE)

    Converter: libsamplerate

    Protocol version: 10002

    Its setup is:

      stream : CAPTURE

      access : RW_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 8000

      exact rate : 8000 (8000/1)

      msbits : 16

      buffer_size : 3000

      period_size : 1000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 1000

      period_event : 0

      start_threshold : 1

      stop_threshold : 3000

      silence_threshold: 0

      silence_size : 0

      boundary : 196608000

    Slave: Route conversion PCM (sformat=S16_LE)

      Transformation table:

      0 <- 0*0.5 + 1*0.5

    Its setup is:

      stream : CAPTURE

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 6

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Slave: Direct Snoop PCM

    Its setup is:

      stream : CAPTURE

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 6

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Hardware PCM card 0 'snd_rpi_wsp' device 0 subdevice 0

    Its setup is:

      stream : CAPTURE

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : ENABLE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 1

      stop_threshold : 1179648000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

      appl_ptr : 0

      hw_ptr : 0

     

     

     

    ragnar@ob3:~/tmp$ file testing16.wav

    testing16.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 8000 Hz

     

     

     

    ragnar@ob3:~/tmp$ aplay -v testing16.wav

    Playing WAVE 'testing16.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

    Plug PCM: Soft volume PCM

    Control: Master

    min_dB: -51

    max_dB: 0

    resolution: 256

    Its setup is:

      stream : PLAYBACK

      access : RW_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 8000

      exact rate : 8000 (8000/1)

      msbits : 16

      buffer_size : 3000

      period_size : 1000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 1000

      period_event : 0

      start_threshold : 3000

      stop_threshold : 3000

      silence_threshold: 0

      silence_size : 0

      boundary : 196608000

    Slave: Plug PCM: Rate conversion PCM (48000, sformat=S16_LE)

    Converter: libsamplerate

    Protocol version: 10002

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 8000

      exact rate : 8000 (8000/1)

      msbits : 16

      buffer_size : 3000

      period_size : 1000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 1000

      period_event : 0

      start_threshold : 3000

      stop_threshold : 3000

      silence_threshold: 0

      silence_size : 0

      boundary : 196608000

    Slave: Route conversion PCM (sformat=S16_LE)

      Transformation table:

      0 <- 0

      1 <- 0

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 1

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 18000

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Slave: Direct Stream Mixing PCM

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : NONE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 18000

      stop_threshold : 18000

      silence_threshold: 0

      silence_size : 0

      boundary : 1179648000

    Hardware PCM card 0 'snd_rpi_wsp' device 0 subdevice 0

    Its setup is:

      stream : PLAYBACK

      access : MMAP_INTERLEAVED

      format : S16_LE

      subformat : STD

      channels : 2

      rate : 48000

      exact rate : 48000 (48000/1)

      msbits : 16

      buffer_size : 18000

      period_size : 6000

      period_time : 125000

      tstamp_mode : ENABLE

      period_step : 1

      avail_min : 6000

      period_event : 0

      start_threshold : 1

      stop_threshold : 1179648000

      silence_threshold: 0

      silence_size : 1179648000

      boundary : 1179648000

      appl_ptr : 0

      hw_ptr : 0

    ragnar@ob3:~/tmp$

     

     

    I notice that you are running aplay as root in your example.

    Have you put a copy of .asoundrc in root's home directory too? Every user needs its own copy.

    Or install a global one: Asoundrc - AlsaProject

    --

    Ragnar

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    HI Ragnar

     

    Thanks for your answer, you are correct, the fail was the asoundrc doesn`t exist in the root folder

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 10 years ago

    How is the CPU usage compared to a USB sound card?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • kjciszewski
    0 kjciszewski over 10 years ago in reply to Former Member

    OK, so has the driver update been completed?  Being without an 8K sample rate makes doing SIP telephone difficult, since much telephony is 8K PCM mulaw or alaw.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube