Noarkhh

Noarkhh

Membrane Core Team

Hi,

I am trying to build a library that wraps some functions provided by libcamera-apps. For this I need the libcamera-apps headers, but they are not present in my ~/.nerves/artifacts/nerves_system_rpi4-portable-1.24.1/staging/usr/include/ directory. It’s the place I would expect them to be, since libcamera headers are present here. Another thing that confuses me is that none of the libcamera-apps executables are in staging/usr/bin/ (e.g. libcamera-vid and libcamera-jpeg), but are present on the generated firmware, so I’m not sure where do they even come from.

Are the libcamera-apps headers provided in the precompiled system? Where do libcamera-apps executables come from?

My system is MacOS, my target is rpi4.

Thanks!

Showing Posts 1 to 6

Noarkhh

Noarkhh OP

Membrane Core Team

After getting to know Buildroot better I have more insight into the problem. It seems that for a package to be included in staging (where headers are present) there needs to be a line in it’s .mk file specifying it - ${PKG}_INSTALL_STAGING.

It seems that this option is not configurable through make menuconfig, so I wonder whether it’s possible to modify/override .mk files from the level of nerves configuraiton without modifying the buildroot release that nerves downloads? I tried using external.mk, but the building process doesn’t allow for two .mk files with the same name.

Thanks!

AlexanderRoempke

AlexanderRoempke

just for understanding
the libcamera and libcamera packages from the menueconfig don’t work?

did you follow:
After make menuconfig: Run make savedefconfig ?

AlexanderRoempke

AlexanderRoempke

try that for yourselfe

iex(5)> cmd(“cd lib && ls”)
vintage_net_wifi-0.11.7
vintage_net_ethernet-0.11.2
vintage_net_direct-0.10.7
vintage_net-0.13.5
uboot_env-1.0.1
toolshed-0.3.1
stdlib-5.1.1
ssh_subsystem_fwup-0.6.1
ssh-5.0.1
shoehorn-0.9.1
sasl-4.2.1
runtime_tools-2.0
ring_logger-0.10.5
public_key-1.14.1
property_table-0.2.4
one_dhcpd-2.0.2
nerves_uevent-0.1.0
nerves_time-0.4.6
nerves_ssh-0.4.3
nerves_runtime-0.13.6
nerves_pack-0.7.0
nerves_motd-0.1.13
nerves_logging-0.2.2
muontrap-1.3.2
mdns_lite-0.8.8
logger-1.15.6
libcameras-0.1.0
kernel-9.1
iex-1.15.6
gen_state_machine-3.0.0
elixir-1.15.6
crypto-5.3
compiler-8.4.1
circular_buffer-0.4.1
beam_notify-1.1.0
asn1-5.2
0

AlexanderRoempke

AlexanderRoempke

iex(20)> System.cmd(“libcamera-raw”, [“-h”])
Valid options for libcamera-raw:

  • -h [ --help ]: Print this help message.
  • --version: Displays the build version number.
  • --list-cameras: Lists the available cameras attached to the system.
  • --camera: Chooses the camera to use. To list the available indexes, use the --list-cameras option.
  • -v [ --verbose ]: Set verbosity level. Level 0 is no output, 1 is default, 2 is verbose.
  • -c [ --config ]: Read the options from a file. Defaults to config.txt if no filename is specified. Only long form options are allowed in the config file.
  • --info-text: Sets the information string on the titlebar. Available values include %frame (frame number), %fps (framerate), %exp (shutter speed), %ag (analogue gain), %dg (digital gain), %rg (red color gain), %bg (blue color gain), %focus (focus FoM value), %aelock (AE locked status), %lp (lens position, if known), %afstate (AF state, if supported).
  • --width: Set the output image width (0 = use default value).
  • --height: Set the output image height (0 = use default value).
  • -t [ --timeout ]: Time (in ms) for which program runs.
  • -o [ --output ]: Set the output file name.
  • --post-process-file: Set the file name for configuring the post-processing.
  • --rawfull: Force use of full resolution raw frames.
  • -n [ --nopreview ]: Do not show a preview window.
  • -p [ --preview ]: Set the preview window dimensions, given as x,y,width,height e.g. 0,0,640,480.
  • -f [ --fullscreen ]: Use a fullscreen preview window.
  • --qt-preview: Use Qt-based preview window (WARNING: causes heavy CPU load, fullscreen not supported).
  • --hflip: Request a horizontal flip transform.
  • --vflip: Request a vertical flip transform.
  • --rotation: Request an image rotation, 0 or 180.
  • --roi: Set region of interest (digital zoom) e.g. 0.25,0.25,0.5,0.5.
  • --shutter: Set a fixed shutter speed in microseconds.
  • --analoggain: Set a fixed gain value (synonym for ‘gain’ option).
  • --gain: Set a fixed gain value.
  • --metering: Set the metering mode (centre, spot, average, custom).
  • --exposure: Set the exposure mode (normal, sport).
  • --ev: Set the EV exposure compensation, where 0 = no change.
  • --awb: Set the AWB mode (auto, incandescent, tungsten, fluorescent, indoor, daylight, cloudy, custom).
  • --awbgains: Set explicit red and blue gains (disable the automatic AWB algorithm).
  • --flush: Flush output data as soon as possible.
  • --wrap: When writing multiple output files, reset the counter when it reaches this number.
  • --brightness: Set the brightness.
Noarkhh

Noarkhh OP

Membrane Core Team

I have libcamera-apps executables available in the target system and I am also able to enable or disable them in the menuconfig (as is shown in the screenshot). The thing I am intersted in are libcamera-apps headers that would allow me to write NIFs that use the libcamera-apps API. As far as I’m aware to get access to them the package would need to be installed to staging, which is enabled by setting LIBCAMERA_APPS_INSTALL_STAGING = YES in the libcamera-apps.mk file before compiling the system.

Right now I worked around it by just invoking libcamera-vid using an Elixir Port and getting the stream from stdout, but I’m still interested whether libcamera-apps headers can be installed to staging without too much effort.

AlexanderRoempke

AlexanderRoempke

ok you clearly have a far better understanding than i have.
i just use raspistill with cmd.
because i got an error with libcamera that i use legacy camera setup.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews