LunaCam Open Source Notices and Source Offer

Last updated: 2026-06-19

This page provides open source license notices and source availability information for the USB-C/UVC camera support included in LunaCam.

Open Source Notice

LunaCam uses open source software for USB-C/UVC camera access. The USB-C camera feature includes UVCCamera, libusb, libuvc, and libjpeg-turbo based components. Copyrights remain with their respective owners. LunaCam uses and distributes these components under their applicable open source license terms.

This product includes software based in part on the work of the Independent JPEG Group.

This notice does not claim endorsement, certification, sponsorship, or approval by UVCCamera, libusb, libuvc, libjpeg-turbo, the Independent JPEG Group, or their contributors.

Distributed USB-C Camera Package

Android library package uvccamera-lib-16kb.aar
AAR SHA-256 F6AAD5A65871B3C10985ABDF950C03DAC49158CCB15B47A09CEB4021C180DD09
Included ABIs arm64-v8a, armeabi-v7a
Included native libraries libUVCCamera.so, libusb100.so, libuvc.so, libjpeg-turbo1500.so

Component Licenses

Component Purpose License Notice
UVCCamera / Serenegiant USB camera wrapper USB camera permission, connection, preview, and capture API on Android Apache License 2.0 Copyright and Apache License 2.0 notices are preserved.
libusb Native USB access layer for Android USB Host communication GNU Lesser General Public License version 2.1 Corresponding source, build instructions, and binary hash records are available under the source offer below.
libuvc USB Video Class camera protocol support BSD-style license Copyright, license conditions, and disclaimer notices are preserved.
libjpeg-turbo JPEG/MJPEG frame handling IJG License and Modified BSD-style license terms Independent JPEG Group and libjpeg-turbo notices are preserved.

libusb Source Code Offer

LunaCam includes libusb100.so as part of its USB-C/UVC camera support. libusb is licensed under the GNU Lesser General Public License version 2.1. A copy of the LGPL 2.1 license text is available from the official GNU link below.

For the LunaCam USB-C camera package identified on this page, LunaCam does not apply source-code modifications to libusb. The distributed Android libusb100.so binaries are rebuilt from libusb source for Android with 16KB page-size compatible build/linker settings.

The corresponding libusb source reference, source modification statement, build instructions, and binary hash records are available by request. Please contact [email protected]. This source offer remains valid for at least three years from the last distribution date of the LunaCam version that includes the listed libusb100.so binaries.

If LunaCam later applies source-level changes to libusb, those changes will be provided as patches under the GNU LGPL 2.1 terms.

libusb Android 16KB Build Method

The distributed libusb100.so binaries are built for Android using unmodified libusb source, Android ABI toolchains, and linker settings intended to satisfy Android 16KB page-size compatibility.

Build Summary

Source project https://github.com/libusb/libusb
Source modifications None by LunaCam for the package identified on this page
Output library name libusb100.so
Output ABIs arm64-v8a, armeabi-v7a
Android page-size compatibility Built with 16KB-compatible linker/build settings and packaged in uvccamera-lib-16kb.aar

Reference Build Steps

The exact build script, source reference, and build notes are provided with the corresponding source package upon request. The build flow follows this structure:

1. Obtain the libusb source used for the distributed binary.
2. Confirm that no LunaCam source-code patches are applied to libusb.
3. Build libusb for arm64-v8a and armeabi-v7a using the Android NDK.
4. Apply 16KB page-size compatible linker/build settings.
5. Produce libusb100.so for each ABI.
6. Record SHA-256 hashes for each produced binary.
7. Package the binaries into uvccamera-lib-16kb.aar under jni/<abi>/libusb100.so.
8. Verify the APK/AAB native library alignment before release.

16KB Linker Settings

Depending on the build system, LunaCam's libusb Android build uses 16KB-compatible linker settings equivalent to:

-Wl,-z,max-page-size=16384
-Wl,-z,common-page-size=16384

CMake-style example:

target_link_options(usb-1.0 PRIVATE
    "-Wl,-z,max-page-size=16384"
    "-Wl,-z,common-page-size=16384"
)

ndk-build-style example:

LOCAL_LDFLAGS += -Wl,-z,max-page-size=16384
LOCAL_LDFLAGS += -Wl,-z,common-page-size=16384

Binary Hashes

Artifact SHA-256
uvccamera-lib-16kb.aar F6AAD5A65871B3C10985ABDF950C03DAC49158CCB15B47A09CEB4021C180DD09
arm64-v8a/libusb100.so 40F95B062C4CFB184B31C07A77FD9B60E76C7E15D1DD53428036D7CC9B5DBD76
armeabi-v7a/libusb100.so 96F214252D2C3792178671C133BE6C926E51B8C2B2C0A0B1F269F330D9BF5755

Release Verification

LunaCam verifies native library packaging and Android 16KB page-size compatibility using appropriate Android build validation tools, such as APK Analyzer, readelf, and zipalign -c -P 16 -v 4.