Take the 2-minute tour ×
Raspberry Pi Stack Exchange is a question and answer site for users and developers of hardware and software for Raspberry Pi. It's 100% free, no registration required.

As stated in Why is my Audio (Sound) Output not working?, to initialise the sound driver, you must run sudo modprobe snd_bcm2835 every time you want to output sound.

How do I get this to run on boot? (ie before logging in and without any input)

share|improve this question
1  
This is another question that could be regarded off-topic. It may be better suited to U&L. –  Jivings Jun 27 '12 at 7:33
2  
@Jivings: Just because it's on-topic on Unix & Linux doesn't make it off-topic for Raspberry Pi, does it? –  Oliver Salzburg Jun 27 '12 at 8:37
2  
@OliverSalzburg: I think that there's too much of an overlap in this particular question. Nothing about this question makes it specific for the Raspberry Pi. –  Jivings Jun 27 '12 at 8:47
1  
Wouldn't the decision at meta.raspberrypi.stackexchange.com/questions/24/… mean that this question is fine here? –  Graham Wager Oct 1 '12 at 10:30
1  
@Jivings Thanks, just wanted to clear that up for any future visitors as the comments were pointing towards closing the question. Maybe all the comments should be deleted instead? –  Graham Wager Oct 3 '12 at 9:05
show 2 more comments

3 Answers

Loading modules at boot is a little different to running startup commands.

In Debian:

Add the module name as a new line in /etc/modules

In Arch

Add the module name to the module array in /etc/rc.conf, the line should look like this:

modules=(snd_bcm2835)

Or for the new systemd configuration:

echo "snd_bcm2835" | sudo tee -a /etc/modules-load.d/snd_bcm2835.conf
share|improve this answer
add comment
up vote 12 down vote accepted

Modprobe on Boot - Debian

To answer the specific question about sudo modprobe snd_bcm2835, add the module to /etc/modules and reboot. (You will need to be root to do this.)

Starting services - Debian

Debian using initscripts to initialise the system, and you can use them to run arbitrary commands. You need to install a script similar to the following in /etc/init.d.

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

You should ensure it is runnable and owned by root.

sudo chmod 755 /etc/init.d/blah
sudo chown root:root /etc/init.d/blah

Then you need to register it to run at startup.

sudo update-rc.d blah defaults

References

share|improve this answer
1  
Neither of these things are unique to Debian. Also, init scripts are not what you should be using to load modules. Only the first section is relevant to the question. –  Jivings Jun 27 '12 at 7:32
    
Neither of them will work on Arch, not sure about QtonPi. –  Alex Chamberlain Jun 27 '12 at 7:34
    
Of course they will. –  Jivings Jun 27 '12 at 7:34
    
Oh... why is your Arch answer different then? –  Alex Chamberlain Jun 27 '12 at 7:35
    
Because Arch defines a handy abstraction for startup events. –  Jivings Jun 27 '12 at 7:36
add comment

There are loads of ways of running a command at start-up in Linux but my favoured approach is to create an initialisation script in /etc/init.d and register it using update-rc.d. This way the application is started and stopped automatically when the system boots / shutdowns.

See this post for a set of instructions on how to create one on the Raspberry Pi.

share|improve this answer
1  
Welcome to Raspberry Pi Beta! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. –  Oliver Salzburg Oct 1 '12 at 9:33
    
How would you do it through systemd or other systems? –  ArchHaskeller Oct 2 '12 at 0:16
add comment

Your Answer

 
discard

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.