{"id":19,"date":"2026-03-05T12:22:23","date_gmt":"2026-03-05T17:22:23","guid":{"rendered":"https:\/\/brian.wheeli.ca\/?p=19"},"modified":"2026-03-05T13:51:09","modified_gmt":"2026-03-05T18:51:09","slug":"diy-fpv-how-to-build-a-fpv-camera","status":"publish","type":"post","link":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/","title":{"rendered":"DIY FPV: How to Build a FPV Camera"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-1024x771.jpg\" alt=\"A remote control car with a first person view camera\" class=\"wp-image-20\" srcset=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-1024x771.jpg 1024w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-300x226.jpg 300w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-768x578.jpg 768w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-1536x1157.jpg 1536w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-2048x1542.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here I will show you how to build a first person view (FPV) camera using a raspberry pi to mount on a rover or drone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The system will use WFB-NG to communicate. WFB-NG uses the broadcast mode of the wifi card to allow higher throughput and longer range than standard wifi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can see a video version of these instructions here: <a href=\"https:\/\/youtu.be\/Zk3wAtFm8ps\">https:\/\/youtu.be\/Zk3wAtFm8ps<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_195849380-1024x771.jpg\" alt=\"\" class=\"wp-image-25\" srcset=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_195849380-1024x771.jpg 1024w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_195849380-300x226.jpg 300w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_195849380-768x578.jpg 768w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_195849380-1536x1157.jpg 1536w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_195849380-2048x1542.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Raspberry Pi\n<ul class=\"wp-block-list\">\n<li>The Raspberry Pi controls the camera, processes the video, and sends it over the wire<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Raspberry Pi camera\n<ul class=\"wp-block-list\">\n<li>The Raspberry Pi camera easily attaches to a slot on a Raspberry Pi\n<ul class=\"wp-block-list\">\n<li>Buy a V3 here: <a href=\"https:\/\/amzn.to\/4d2fDmz\">https:\/\/amzn.to\/4d2fDmz<\/a><\/li>\n\n\n\n<li>Or a V2 here: <a href=\"https:\/\/s.click.aliexpress.com\/e\/_c4Ftm0Un\">https:\/\/s.click.aliexpress.com\/e\/_c4Ftm0Un<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>You can also use a USB webcam<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Wifi Card\n<ul class=\"wp-block-list\">\n<li>Only certain chipsets have the features needed by the WFB-NG software\n<ul class=\"wp-block-list\">\n<li>The one I use is the <code>RTL8812AU<\/code> chipset\n<ul class=\"wp-block-list\">\n<li>RTL8812EU will also work<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>You can buy a card with the RTL8812AU chipset here:\n<ul class=\"wp-block-list\">\n<li>The one I used for the rover:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/amzn.to\/4sjGtLA\">https:\/\/amzn.to\/4sjGtLA<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The one I used for the ground station:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/amzn.to\/3MXkLht\">https:\/\/amzn.to\/3MXkLht<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>This one might be better:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/s.click.aliexpress.com\/e\/_c38ZMPcb\">https:\/\/s.click.aliexpress.com\/e\/_c38ZMPcb<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>This one&#8217;s pretty small:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/s.click.aliexpress.com\/e\/_c4Nynw3z\">https:\/\/s.click.aliexpress.com\/e\/_c4Nynw3z<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Raspberry Pi OS\n<ul class=\"wp-block-list\">\n<li>The raspberry pi operating system is on the WFB-NG image for easy installation<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Ubuntu\n<ul class=\"wp-block-list\">\n<li>In this example, I use Ubuntu on the computer that will receive the video stream. Any linux flavour will do, though Debian based distributions will be easier. Raspberry Pi OS will be easier still.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>WFB-NG\n<ul class=\"wp-block-list\">\n<li>This is the software that allows for long range high bandwidth FPV video streaming<\/li>\n\n\n\n<li>It also supports mavlink, so in the future I will try to control the car using the same system<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>GStreamer\n<ul class=\"wp-block-list\">\n<li>In this example I use GStreamer to receive the video. You could also potentially use VLC Media Player or even QGroundControl ground control software (supported by WFB-NG)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instructions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is how you set up the software to stream video from the Raspberry Pi camera over the air to a computer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For more information or troubleshooting involving WFB-NG, go to the GitHub page here: <a href=\"https:\/\/github.com\/svpcom\/wfb-ng?tab=readme-ov-file\">https:\/\/github.com\/svpcom\/wfb-ng?tab=readme-ov-file<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rover \/ Drone Side<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Plug your supported Wifi card into the Raspberry Pi. You&#8217;ll also need an additional (temporary) wifi connection or wired connection to ssh into the Pi.<\/li>\n\n\n\n<li>Download the Raspberry Pi image from the WFB-NG website\n<ul class=\"wp-block-list\">\n<li>The latest image is here: <a href=\"https:\/\/github.com\/svpcom\/wfb-ng\/releases\">https:\/\/github.com\/svpcom\/wfb-ng\/releases<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Burn the image to an SD card for the Raspberry Pi\n<ul class=\"wp-block-list\">\n<li>For Linux, you can use ISO Image Writer<\/li>\n\n\n\n<li>For Windows you can use Balena Etcher or Disk Imager<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>SSH into your Raspberry Pi\n<ul class=\"wp-block-list\">\n<li>In a terminal, type <code>ssh pi@192.168.1.12<\/code> (replace the IP address with your pi&#8217;s)\n<ul class=\"wp-block-list\">\n<li>The default password is &#8220;raspberry&#8221;. You might want to change it.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Edit your fpv camera service to use the Raspberry Pi camera\n<ul class=\"wp-block-list\">\n<li>type <code>sudo nano \/etc\/systemd\/system\/fpv-camera.service<\/code><\/li>\n\n\n\n<li>Comment out the test camera, and uncomment the v4l2 Pi camera<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Type in these commands to enable the services:\n<ul class=\"wp-block-list\">\n<li><code><code>sudo systemctl enable wifibroadcast@drone<\/code><\/code><br><code><code>sudo systemctl enable fpv-camera<\/code><\/code><br><code><code>sudo reboot<\/code><\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The only thing left on the rover side is to get the key from the controller side!<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Controller \/ Ground Station Side<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I am assuming you already have Ubuntu (or some other Linux version) installed.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Type in the following to blacklist your existing driver:\n<ul class=\"wp-block-list\">\n<li><code>cat &gt; \/etc\/modprobe.d\/wfb-blacklist.conf &lt;&lt;EOF<br># blacklist stock module<br>blacklist 88XXau<br>blacklist 8812au<br>blacklist rtl8812au<br>blacklist rtl88x2bs<br>EOF<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Type in these to install the patched driver:\n<ul class=\"wp-block-list\">\n<li><code>sudo apt-get install dkms<br>git clone -b v5.2.20 https:\/\/github.com\/svpcom\/rtl8812au.git<br>cd rtl8812au\/<br>sudo .\/dkms-install.sh<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Find the name of your Wifi card by typing:\n<ul class=\"wp-block-list\">\n<li><code>ifconfig<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Run the installer:\n<ul class=\"wp-block-list\">\n<li><code>curl -o install_gs.sh https:\/\/raw.githubusercontent.com\/svpcom\/wfb-ng\/refs\/heads\/master\/scripts\/install_gs.sh sudo bash .\/install_gs.sh<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Run the key generator:\n<ul class=\"wp-block-list\">\n<li>wfb_keygen<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Copy the drone.key to the Raspberry Pi\n<ul class=\"wp-block-list\">\n<li><code>rsync -a pi@192.168.1.12:\/home\/pi\/ .\/drone.key<\/code><\/li>\n\n\n\n<li>(then on the Raspberry Pi) <code>sudo mv ~\/drone.key \/etc\/<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Enable the service:\n<ul class=\"wp-block-list\">\n<li><code><code>sudo systemctl enable wifibroadcast@<\/code><\/code>gs<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>See if you get some packets:\n<ul class=\"wp-block-list\">\n<li><code>wfb-cli gs<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">GStreamer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can use GStreamer on the Controller \/ Ground Station to view and record your video.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2299\" height=\"1290\" src=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f.png\" alt=\"\" class=\"wp-image-26\" srcset=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f.png 2299w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f-300x168.png 300w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f-1024x575.png 1024w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f-768x431.png 768w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f-1536x862.png 1536w, https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/fpv001f-2048x1149.png 2048w\" sizes=\"auto, (max-width: 2299px) 100vw, 2299px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the command:<br><code>gst-launch-1.0 udpsrc port=5600 caps=\"application\/x-rtp, media=video, encoding-name=H264, payload=96\" ! rtph264depay ! h264parse ! tee name=t ! queue leaky=1 ! avdec_h264 ! autovideosink sync=false t. ! queue ! matroskamux ! filesink location=fpv.mkv -e<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What this does is launch GStreamer, looking for video udp packets on port 5600. It decodes them, then forks. One fork displays the video on the screen. The other fork records the video as &#8220;fpv.mkv&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Happy tinkering!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Here I will show you how to build a first person view (FPV) camera using a raspberry pi to mount on a rover or drone. The system will use WFB-NG to communicate. WFB-NG uses the broadcast mode of the wifi card to allow higher throughput and longer range than standard wifi. You can see &#8230; <a title=\"DIY FPV: How to Build a FPV Camera\" class=\"read-more\" href=\"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/\" aria-label=\"Read more about DIY FPV: How to Build a FPV Camera\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-19","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DIY FPV: How to Build a FPV Camera - Brian Wheeler<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DIY FPV: How to Build a FPV Camera - Brian Wheeler\" \/>\n<meta property=\"og:description\" content=\"Introduction Here I will show you how to build a first person view (FPV) camera using a raspberry pi to mount on a rover or drone. The system will use WFB-NG to communicate. WFB-NG uses the broadcast mode of the wifi card to allow higher throughput and longer range than standard wifi. You can see ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/\" \/>\n<meta property=\"og:site_name\" content=\"Brian Wheeler\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-05T17:22:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-05T18:51:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1928\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"brian\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"brian\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/\"},\"author\":{\"name\":\"brian\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/#\\\/schema\\\/person\\\/a567b1f0a1184c426b190d4960e5e979\"},\"headline\":\"DIY FPV: How to Build a FPV Camera\",\"datePublished\":\"2026-03-05T17:22:23+00:00\",\"dateModified\":\"2026-03-05T18:51:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/\"},\"wordCount\":669,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/#\\\/schema\\\/person\\\/a567b1f0a1184c426b190d4960e5e979\"},\"image\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/PXL_20260303_200007815-1024x771.jpg\",\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/\",\"url\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/\",\"name\":\"DIY FPV: How to Build a FPV Camera - Brian Wheeler\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/PXL_20260303_200007815-1024x771.jpg\",\"datePublished\":\"2026-03-05T17:22:23+00:00\",\"dateModified\":\"2026-03-05T18:51:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#primaryimage\",\"url\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/PXL_20260303_200007815-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/PXL_20260303_200007815-scaled.jpg\",\"width\":2560,\"height\":1928,\"caption\":\"A remote control car with a first person view camera\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/2026\\\/03\\\/05\\\/diy-fpv-how-to-build-a-fpv-camera\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/brian.wheeli.ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DIY FPV: How to Build a FPV Camera\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/#website\",\"url\":\"https:\\\/\\\/brian.wheeli.ca\\\/\",\"name\":\"Brian Wheeler\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/#\\\/schema\\\/person\\\/a567b1f0a1184c426b190d4960e5e979\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/brian.wheeli.ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/#\\\/schema\\\/person\\\/a567b1f0a1184c426b190d4960e5e979\",\"name\":\"brian\",\"pronouns\":\"he\\\/him\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Photo-on-2026-05-26-at-14.12-2-cropped.png\",\"url\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Photo-on-2026-05-26-at-14.12-2-cropped.png\",\"contentUrl\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Photo-on-2026-05-26-at-14.12-2-cropped.png\",\"width\":416,\"height\":337,\"caption\":\"brian\"},\"logo\":{\"@id\":\"https:\\\/\\\/brian.wheeli.ca\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Photo-on-2026-05-26-at-14.12-2-cropped.png\"},\"description\":\"I am Brian Wheeler, a software developer in Ontario Canada.\",\"sameAs\":[\"https:\\\/\\\/brian.wheeli.ca\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/brian-wheeler-a90214149\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCXqIAGyn1pLhqsdTvytvRgA\"],\"url\":\"https:\\\/\\\/brian.wheeli.ca\\\/index.php\\\/author\\\/brian\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DIY FPV: How to Build a FPV Camera - Brian Wheeler","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/","og_locale":"en_US","og_type":"article","og_title":"DIY FPV: How to Build a FPV Camera - Brian Wheeler","og_description":"Introduction Here I will show you how to build a first person view (FPV) camera using a raspberry pi to mount on a rover or drone. The system will use WFB-NG to communicate. WFB-NG uses the broadcast mode of the wifi card to allow higher throughput and longer range than standard wifi. You can see ... Read more","og_url":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/","og_site_name":"Brian Wheeler","article_published_time":"2026-03-05T17:22:23+00:00","article_modified_time":"2026-03-05T18:51:09+00:00","og_image":[{"width":2560,"height":1928,"url":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-scaled.jpg","type":"image\/jpeg"}],"author":"brian","twitter_card":"summary_large_image","twitter_misc":{"Written by":"brian","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#article","isPartOf":{"@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/"},"author":{"name":"brian","@id":"https:\/\/brian.wheeli.ca\/#\/schema\/person\/a567b1f0a1184c426b190d4960e5e979"},"headline":"DIY FPV: How to Build a FPV Camera","datePublished":"2026-03-05T17:22:23+00:00","dateModified":"2026-03-05T18:51:09+00:00","mainEntityOfPage":{"@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/"},"wordCount":669,"commentCount":0,"publisher":{"@id":"https:\/\/brian.wheeli.ca\/#\/schema\/person\/a567b1f0a1184c426b190d4960e5e979"},"image":{"@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#primaryimage"},"thumbnailUrl":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-1024x771.jpg","inLanguage":"en-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/","url":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/","name":"DIY FPV: How to Build a FPV Camera - Brian Wheeler","isPartOf":{"@id":"https:\/\/brian.wheeli.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#primaryimage"},"image":{"@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#primaryimage"},"thumbnailUrl":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-1024x771.jpg","datePublished":"2026-03-05T17:22:23+00:00","dateModified":"2026-03-05T18:51:09+00:00","breadcrumb":{"@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#primaryimage","url":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-scaled.jpg","contentUrl":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/03\/PXL_20260303_200007815-scaled.jpg","width":2560,"height":1928,"caption":"A remote control car with a first person view camera"},{"@type":"BreadcrumbList","@id":"https:\/\/brian.wheeli.ca\/index.php\/2026\/03\/05\/diy-fpv-how-to-build-a-fpv-camera\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/brian.wheeli.ca\/"},{"@type":"ListItem","position":2,"name":"DIY FPV: How to Build a FPV Camera"}]},{"@type":"WebSite","@id":"https:\/\/brian.wheeli.ca\/#website","url":"https:\/\/brian.wheeli.ca\/","name":"Brian Wheeler","description":"","publisher":{"@id":"https:\/\/brian.wheeli.ca\/#\/schema\/person\/a567b1f0a1184c426b190d4960e5e979"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/brian.wheeli.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":["Person","Organization"],"@id":"https:\/\/brian.wheeli.ca\/#\/schema\/person\/a567b1f0a1184c426b190d4960e5e979","name":"brian","pronouns":"he\/him","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/05\/Photo-on-2026-05-26-at-14.12-2-cropped.png","url":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/05\/Photo-on-2026-05-26-at-14.12-2-cropped.png","contentUrl":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/05\/Photo-on-2026-05-26-at-14.12-2-cropped.png","width":416,"height":337,"caption":"brian"},"logo":{"@id":"https:\/\/brian.wheeli.ca\/wp-content\/uploads\/2026\/05\/Photo-on-2026-05-26-at-14.12-2-cropped.png"},"description":"I am Brian Wheeler, a software developer in Ontario Canada.","sameAs":["https:\/\/brian.wheeli.ca","https:\/\/www.linkedin.com\/in\/brian-wheeler-a90214149\/","https:\/\/www.youtube.com\/channel\/UCXqIAGyn1pLhqsdTvytvRgA"],"url":"https:\/\/brian.wheeli.ca\/index.php\/author\/brian\/"}]}},"_links":{"self":[{"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/posts\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":6,"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/posts\/19\/revisions"}],"predecessor-version":[{"id":30,"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/posts\/19\/revisions\/30"}],"wp:attachment":[{"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/media?parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/categories?post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brian.wheeli.ca\/index.php\/wp-json\/wp\/v2\/tags?post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}