I'm using a pi distro that includes the proper kernel and everything, but not raspistill or raspicam. How can I install these?

1 Answer 1


raspistill or raspivid. How can I install these?

They're distributed pre-compiled (armv6, which will work with any distro that runs on any model) via the Raspberry Pi Foundation's github site, in the same repository that includes the kernel and various other bits.

git clone https://github.com/raspberrypi/firmware

You don't need to install this on the Pi, as long as it is possible for you to copy some files back and forth. I mention this because my current version of it is 8.1 GB -- however, I've been updating (various branches of) it for years and 7.9 GB of that are in the .git directory, so a fresh download should be much smaller.

For the raspicam stuff, you only need what's in the hardfp/opt/vc/ directory. Beware there's also an opt/vc (no hardfp), and readelf seems to confirm that, as implied, these are not compiled with hardware floating point support (which is likely significant for graphics applications, although most of the heavy lifting should be done on the GPU anyway).

You can copy all that straight into the top level of you root file system as /opt/vc on the Pi. You then need to let the dynamic linker know about the libraries:

echo "/opt/vc/lib" > opt-vc.conf
sudo chown root.root opt-vc.conf
sudo mv opt-vc.conf /etc/ld.so.conf.d/
sudo ldconfig

You should now be able to go into /opt/vc/bin and run ldd raspistill to check it is linked properly:

> ldd /opt/vc/bin/raspistill
linux-vdso.so.1 (0x7efff000)
libmmal_core.so => /opt/vc/lib/libmmal_core.so (0x76f0b000)
libmmal_util.so => /opt/vc/lib/libmmal_util.so (0x76eeb000)
libmmal_vc_client.so => /opt/vc/lib/libmmal_vc_client.so (0x76ed0000)
libbrcmGLESv2.so => /opt/vc/lib/libbrcmGLESv2.so (0x76eab000)
libbrcmEGL.so => /opt/vc/lib/libbrcmEGL.so (0x76e72000)
libm.so.6 => /lib/libm.so.6 (0x76df0000)
libvcsm.so => /opt/vc/lib/libvcsm.so (0x76ddc000)
libbcm_host.so => /opt/vc/lib/libbcm_host.so (0x76db6000)
libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0x76da0000)
libvcos.so => /opt/vc/lib/libvcos.so (0x76d84000)
libpthread.so.0 => /lib/libpthread.so.0 (0x76d5b000)
libdl.so.2 => /lib/libdl.so.2 (0x76d46000)
librt.so.1 => /lib/librt.so.1 (0x76d2f000)
libc.so.6 => /lib/libc.so.6 (0x76bcf000)
/lib/ld-linux-armhf.so.3 (0x54b7a000)

By "properly linked", I just mean check there's no ??? after any of the => arrows. The output will differ a bit from system to system except for the pi-specific /opt/vc/lib/... stuff.

You probably then want to add that bin directory (which includes vcgencmd and some other things) to your $PATH, so that the executables (such as raspivid and raspistill) can be found.

If you are going to compile against the libraries note there's a pkgconfig directory and you may want to add that to your $PKG_CONFIG_PATH. The Pi version of OpenGL-ES is in there (notice some of it is linked to raspistill, above).

Note that you still have to enable the camera, which is a matter of adding start_x=1 to /boot/config.txt and explicitly committing at least 128 MB of RAM to the GPU.

  • 1
    You'll also need the start_x.elf firmware in /boot, start_x=1 in the boot config.txt, and a GPU split of 128Mb or larger for the camera's GPU firmware to be loaded and operate correctly
    – Dave Jones
    Commented May 17, 2017 at 10:05
  • /etc/ld.so.conf is a file (at least in raspi OS bullseye), move opt-vc.conf into /etc/ls.so.conf.d/ Commented Nov 21, 2021 at 14:41
  • @noranraskin Yikes, thanks for that -- it (was) a mistake.
    – goldilocks
    Commented Nov 21, 2021 at 15:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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