{"id":13472863,"url":"https://github.com/showmewebcam/showmewebcam","last_synced_at":"2025-05-15T17:01:36.642Z","repository":{"id":40547756,"uuid":"282382122","full_name":"showmewebcam/showmewebcam","owner":"showmewebcam","description":"Raspberry Pi + High Quality Camera = High-quality USB Webcam!","archived":false,"fork":false,"pushed_at":"2024-08-14T16:42:44.000Z","size":155,"stargazers_count":1395,"open_issues_count":77,"forks_count":128,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-03-31T20:11:11.846Z","etag":null,"topics":["camera","dslr","mirrorless","raspberry-pi","webcam"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/showmewebcam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-25T06:02:21.000Z","updated_at":"2025-03-21T16:11:56.000Z","dependencies_parsed_at":"2024-09-24T22:32:10.074Z","dependency_job_id":"d5a58005-48f4-4d4c-9d0e-632b67dcce90","html_url":"https://github.com/showmewebcam/showmewebcam","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/showmewebcam%2Fshowmewebcam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/showmewebcam%2Fshowmewebcam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/showmewebcam%2Fshowmewebcam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/showmewebcam%2Fshowmewebcam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/showmewebcam","download_url":"https://codeload.github.com/showmewebcam/showmewebcam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730069,"owners_count":20986404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["camera","dslr","mirrorless","raspberry-pi","webcam"],"created_at":"2024-07-31T16:00:58.565Z","updated_at":"2025-04-07T21:15:18.632Z","avatar_url":"https://github.com/showmewebcam.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# Show-me webcam: An open source, trustable and high quality webcam\n\n[![Build/Release](https://github.com/showmewebcam/showmewebcam/workflows/Build/Release/badge.svg)](https://github.com/showmewebcam/showmewebcam/actions)\n[![License](https://img.shields.io/github/license/showmewebcam/showmewebcam?label=License)](https://github.com/showmewebcam/showmewebcam/blob/master/LICENSE)\n[![Last Release](https://img.shields.io/github/release/showmewebcam/showmewebcam.svg?label=Last%20Release)](https://github.com/showmewebcam/showmewebcam/releases/)\n[![Total Downloads](https://img.shields.io/github/downloads/showmewebcam/showmewebcam/total.svg?label=Total%20Downloads)](https://github.com/showmewebcam/showmewebcam/releases/)\n[![Discord Chat](https://img.shields.io/discord/774949618832113674.svg?label=Discord%20Chat)](https://discord.gg/dTc4jtf3YX)\n\nThis firmware transforms your Raspberry Pi into a high quality webcam. It works reliably, boots quickly, and gets out of your way.\n\n### [Wiki \u0026 Documentation](https://github.com/showmewebcam/showmewebcam/wiki) | [Discord Chat](https://discord.gg/dTc4jtf3YX) | [Introduction video](https://youtu.be/nH2G16YoBT4) | [Hackaday Project](https://hackaday.io/project/174479-raspberry-pi-0-hq-usb-webcam)\n\nShow-me webcam is proudly powered by [peterbay's uvc-gadget](https://github.com/peterbay/uvc-gadget).\n\n## What you need\n\n- Raspberry Pi Zero with or without Wifi\n- Raspberry Pi Zero Camera Adapter/Ribbon (The one that comes with the camera may not fit)\n- Raspberry Pi Camera or Raspberry Pi High-Quality Camera\n- [A compatible lens](https://github.com/showmewebcam/showmewebcam/wiki/Lenses) if you use the HQ Camera sensor\n- Micro SD card (at least 64MB)\n- A [case or mounting plate](https://github.com/showmewebcam/showmewebcam/wiki/Cases) (optional)\n\n## What works and what doesn't\n\n- The camera is known to work on Linux, Windows 10 and Mac OS\n- The camera is known to work with Zoom, Teams, Skype, Jitsi, Firefox and Chrome\n- Here's a compatibility matrix as far as we could test. Let us know if you had the chance to test other variants:\n\n| Raspberry Pi \\ Camera version  | v1 5MP  | v2 8MP  | High Quality 12MP |\n| ------------------------------ | ------- | ------- | ----------------- |\n| Pi Zero v1.3 (without Wifi)    | \u0026check; | \u0026check; | \u0026check;           |\n| Pi Zero W (with Wifi)          | \u0026check; | \u0026check; | \u0026check;           |\n| Pi 4+                          | \u0026check; | \u0026check; | \u0026check;           |\n\n## Instructions\n\n- [Follow the Cytron tutorial](https://tutorial.cytron.io/2020/12/29/raspberry-pi-zero-usb-webcam/).\n- Smile \u0026 Enjoy!\n\n## Stable releases\n\nWe release new versions of this firmware regularly at the release tab:\nhttps://github.com/showmewebcam/showmewebcam/releases\n\n## LED indicator\n\nAfter booting, the built-in LED will blink three times quickly to show you it's ready.\n\nWhen the camera is in use the LED will be lit. In addition,\n[GPIO 21](https://pinout.xyz/pinout/pin40_gpio21#) pin is set to `HIGH`, so an\nexternal LED or another payload can be triggered with this pin to indicate that\nthe camera is in use.\n\n\n## Debugging\n\nFor debugging, a 115200 baud serial interface is provided as a `ttyACM` device:\n- Use screen, minicom, picocom or the included `smwc-expect` script to connect to it\n- Use username: `root`, password `root`\n\nAlso, there is a serial interface on the 40-pin header: https://pinout.xyz/pinout/uart\n\nLinux example:\n```\n$ ls -l /dev/ttyACM*\ncrw-rw---- 1 root dialout 166, 0 sep 25 14:03 /dev/ttyACM0\n$ sudo screen /dev/ttyACM0 115200\n```\n\nMac OS example:\n```\n$ ls -l /dev/tty.*\ncrw-rw-rw-  1 root  wheel    9,  18 Dec  7 13:14 /dev/tty.usbmodem13103\n$ screen /dev/tty.usbmodem13103 115200\n```\n\nIf the terminal is blank try pressing enter to see the login prompt. To exit\nthe session, use `Ctrl-A \\` (screen) or `Ctrl-A X` (minicom \u0026 picocom).\n\n**Warning**: This serial debug interface is automatically enabled and is controlled\nby the file called `enable-serial-debug` in the `/boot` folder. This is a potential\nsecurity issue. For now, you should strongly consider disabling this feature by\nremoving the file after you have finished customizing the webcam.\n\n\n### My camera doesn't show up on my host computer! What to do?\n\nFrom version 1.80, on Linux, you can see what happens by watching `dmesg`\nbefore you plug in the webcam:\n\n```\n$ sudo dmesg -w\n```\n\nIf you only see the `ttyACM` device show up, but not the webcam, it's likely you\nhave not plugged in the camera cable correctly, or the camera cable has gone bad.\n\nIf you see nothing, maybe your USB cable is bad, or you have plugged in the cable\nto the wrong port.\n\n\n## Customizing camera settings\n\n### Automatic\n\nLog in to the debug interface and execute:\n\n```bash\n/usr/bin/camera-ctl\n```\n\nThis tool will allow you to show and tweak all available camera parameters.\nAdditionally it will save your settings to `/boot/camera.txt` if you choose to\ndo so. This will handle remounting `/boot` automatically.\n\n### Manual\n\n#### Overriding camera settings temporarily\n\nLog in to the debug interface. Then list all tweakable parameters:\n\n```bash\n/usr/bin/v4l2-ctl -L | less\n```\n\nThen you can apply parameters on the fly, e.g.\n\n```\n/usr/bin/v4l2-ctl -c auto_exposure_bias=15\n/usr/bin/v4l2-ctl -c contrast=3\n```\n\n#### Overriding camera settings permanently\n\nMount the SD card on your computer, edit a file called `camera.txt` in\n`/boot` and put all parameters you want overridden, e.g:\n\n```\n# Tweak the auto exposure bias\nauto_exposure_bias=15\n# Tweak the contrast\ncontrast=3\n```\n\nYou can edit `camera.txt` on-target by remounting `/boot` read-write:\n\n```bash\nmount -o remount,rw /boot\n```\n\n### Overriding the controls available to the host computer\n\nSince version 1.80 we try to expose as many controls as possible via the UVC\nstandard, which are then translated back to the controls that are available\non your specific camera module. Some host operating systems may be confused\nby controls that are advertised via USB, but don't turn out to work, due to\nnot being available for your specific camera module.\n\nYou can therefore customize the controls advertised to the computer via the\nUSB device descriptor. *Warning*: This is an advanced user feature only.\nYou should probably consult the [UVC controls bitmap documentation] on GitHub.\n\nYou can add the parameters to `cmdline.txt` on the boot volume as follows:\n\n```\nusb_f_uvc.camera_terminal_controls=0,0,0 usb_f_uvc.processing_unit_controls=0,0\n```\n\nThe above example disables all controls and should thus be safe.\nThe parameters directly correspond to the `bmControls` bitfields in the descriptor.\nPlease, again, read the documentation linked above.\n\nAn example for enabling all the available controls for the 8 Mpixel (v2) camera for the Raspberry Pi 4B is given below:\n\n```\nusb_f_uvc.camera_terminal_controls=10,0,0 usb_f_uvc.processing_unit_controls=219,4\n```\n\n### Configure available camera resolutions and streaming format\n\nThe camera advertises the available resolutions and streaming formats to the\nconnected host PC. Usually the best suitable resolution is chosen. The available\nresolutions can be reduced to enforce a specific setting.\n\nBy default the camera uses the *Motion JPEG* codec to stream the video signal.\nFor the host PC it offers several video resolutions up to 1080p HD video to\nchoose from.\n\nThese settings can be overwritten by copying the file `video_formats.txt` into\nthe `/boot` folder and editing it.\n\n```bash\ncp /etc/video_formats.txt /boot\n```\n\nIn this file one line corresponds to one video resolution and streaming format.\nUntil now, only mjpeg and uncompressed video are supported. If you want to make\ncertain resolutions unavailable, comment them out by prepending a `#` to that\nline or removing them altogether.\n\nPlease note that you have to reboot your piwebcam (power cycle it) for changes to take effect.\n\n## Development \u0026 building\n\nClone or download this repository. Then inside it:\n\n- Clone the repository with submodules:\n  - `git clone --recurse-submodules https://github.com/showmewebcam/showmewebcam.git`\n- Run build command:\n  - `./build-showmewebcam.sh raspberrypi0w` to build Raspberry Pi Zero W (with Wifi) image.\n  - `./build-showmewebcam.sh raspberrypi0` to build Raspberry Pi Zero (without Wifi) image.\n  - `./build-showmewebcam.sh raspberrypi4` to build Raspberry Pi 4 image.\n- The resulting image `sdcard.img` will be in the `output/$BOARDNAME/images` folder\n- If you add a `camera.txt` file to the root of this repository, the contents will be automatically added to `/boot/camera.txt`\n\n**Note:** If you want to use external Buildroot directory you need to set the Buildroot path manually, e.g. `BUILDROOT_DIR=../buildroot ./build-showmewebcam.sh raspberrypi0`\n\n## Credits\n\n- David Hunt: http://www.davidhunt.ie/raspberry-pi-zero-with-pi-camera-as-usb-webcam/\n- Petr Vavřín: [uvc-gadget](https://github.com/peterbay/uvc-gadget)\n- Buildroot\n- ARM fever: https://armphibian.wordpress.com/2019/10/01/how-to-build-raspberry-pi-zero-w-buildroot-image/\n- The repository icon is attributed to the GNOME project\n\n\n[UVC controls bitmap documentation]: https://github.com/showmewebcam/showmewebcam/wiki/UVC-Controls\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshowmewebcam%2Fshowmewebcam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshowmewebcam%2Fshowmewebcam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshowmewebcam%2Fshowmewebcam/lists"}