Raspberry Pi Stack Exchange is a question and answer site for users and developers of hardware and software for Raspberry Pi. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am just confusing about snd_bcm2835. What is it ? Is it sound driver then why ALSA is used for ? How could I get this, Can anyone elaborate this one.

Thank you

share|improve this question
up vote 4 down vote accepted

I think that the snd_bcm2835 is the hardware abstraction layer for the audio I/O for the BCM2835 SOC.

ALSA and other drivers (for example for network cards) that need to deal with a lot of different chips/hardware implementations, are normally designed in a way that separates the lowlevel hardware control from the (more highlevel) process control.

Meaning that for Audio Chip A you need to set some parameters in a certain register, but for Audio Chip B you need to set some other (similar) parameters in a different register (different addressing for example). In that case you can decide to make two separate drivers, one for chip A and one for chip B.

When you create in both hardware drivers a function 'Init_Card()' (that might do very different thing, but with the same result: initialize the card) all the software layers you create on top of these hardware abstraction layers, do not need to know HOW to initialize the hardware, they just call that 'Init_Card()' function to the the chip in a usable state.

When you do this for all the functions that the chip has (play a sound, change mixer settings, record sound etc etc) you created a hardware abstraction layer for the chip. So for all the functionality of the various audio chips, you only need to call the same functions, but in different drivers (specific for that chip).

The higher software layers now do not need to worry about the hardware, they just read some data stream, buffer this if needed and hand the data to the correct function of the correct hardware driver who then makes sure that the data is processed according to the chips specific specifications.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.