{"id":1759,"date":"2026-09-18T12:23:41","date_gmt":"2026-09-18T12:23:41","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=1759"},"modified":"2026-09-18T14:17:41","modified_gmt":"2026-09-18T14:17:41","slug":"running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/","title":{"rendered":"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In this project, we will look at how the <strong>BleuIO SSD025 Bluetooth Low Energy USB dongle<\/strong> can add BLE communication to an <strong>Adafruit Fruit Jam<\/strong> powered by the RP2350.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project takes an unusual software approach. Instead of running the HibouAir scanner as part of the native firmware, the Fruit Jam runs a custom real-time operating system called <strong>myRTOS<\/strong> .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A myRTOS application module, hibouair.c, written in C, communicates with the BleuIO dongle over USB, scans for nearby HibouAir air-quality sensors, decodes their Bluetooth Low Energy advertisements and displays the latest measurements in real time in a terminal window.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The result is a compact embedded BLE air-quality gateway running on the RP2350.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requirements<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For this project, we use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.adafruit.com\/product\/6200?srsltid=AU7gw4VvDGiQIhl01pYYZk4Ux7cOOPDTQkyDn2CjQ-WjLp9FCggLJnRZ\" target=\"_blank\" rel=\"noreferrer noopener\">Adafruit Fruit Jam with RP2350B<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bleuio.com\/bluetooth-low-energy-usb-ssd025.php\" target=\"_blank\" rel=\"noreferrer noopener\">BleuIO SSD025 Bluetooth Low Energy USB dongle<\/a><\/li>\n\n\n\n<li>One or more <a href=\"https:\/\/www.hibouair.com\/specifications-air-quality-monitor-co2-sensor.php\" target=\"_blank\" rel=\"noreferrer noopener\">HibouAir SSD002 air-quality sensors<\/a><\/li>\n\n\n\n<li>myRTOS<\/li>\n\n\n\n<li>USB data cable<\/li>\n\n\n\n<li>Computer with a serial terminal such as PuTTY<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The Fruit Jam is particularly suitable for this project because it has a built-in USB hub with two exposed USB host ports.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"586\" height=\"441\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image.png\" alt=\"\" class=\"wp-image-1761\" style=\"aspect-ratio:1.3299319727891157;width:391px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image.png 586w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-300x226.png 300w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What does this project do?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">1. HibouAir broadcasts sensor data<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. BleuIO receives the BLE advertisements<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. Fruit Jam receives the data over USB<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4. myRTOS decodes and displays the measurements<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The HibouAir sensor periodically broadcasts its measurements using BLE advertising packets. The SSD025 receives these packets and makes the information available to the RP2350 over USB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The myRTOS application then scans for HibouAir devices, interprets the received information and maintains a live list of detected sensors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The terminal provides an easy way to observe the air-quality information as it arrives.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The project is built around three main pieces of hardware.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"814\" height=\"543\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-1.png\" alt=\"\" class=\"wp-image-1762\" style=\"aspect-ratio:1.5;width:543px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-1.png 814w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-1-300x200.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-1-768x512.png 768w\" sizes=\"auto, (max-width: 814px) 100vw, 814px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Adafruit Fruit Jam with the BleuIO SSD025 connected directly to the USB Type-A host port.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Adafruit Fruit Jam<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Fruit Jam is a compact computer based on the <strong>RP2350B<\/strong> microcontroller. Adafruit provides two USB Type-A host ports through an onboard USB hub, making it possible to connect USB peripherals directly to the board.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The board provides considerably more functionality than is required for this simple gateway. In addition to the RP2350B, it includes flash storage, PSRAM, USB host capability, microSD, DVI output, audio hardware and an ESP32-C6 for wireless connectivity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this project, however, the important feature is the <strong>USB host interface<\/strong> .<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">BleuIO SSD025<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The BleuIO SSD025 is used as the Bluetooth Low Energy interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This means the RP2350 application does not need to implement the Bluetooth Low Energy stack itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The dongle supports Bluetooth 5.2 and USB Full Speed, can operate in Bluetooth central or peripheral roles, and is controlled through its USB interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The application can therefore access BLE functionality through BleuIO&#8217;s USB interface while leaving the Bluetooth communication to the dongle.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">HibouAir SSD002<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The HibouAir SSD002 is the wireless air-quality sensor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HibouAir&#8217;s documentation describes the SSD002\/2B as a CO2 air-quality monitor using an NDIR CO2 sensor, with wireless Bluetooth connectivity. The sensor family can provide environmental parameters including CO2, temperature, humidity, particulate matter and VOC-related measurements depending on the model.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"486\" height=\"351\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-2.png\" alt=\"\" class=\"wp-image-1763\" style=\"aspect-ratio:1.3846153846153846;width:324px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-2.png 486w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-2-300x217.png 300w\" sizes=\"auto, (max-width: 486px) 100vw, 486px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.hibouair.com\">www.hibouair.com<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why use BleuIO?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The BleuIO acts as the bridge between the USB host implemented by the Fruit Jam and the Bluetooth Low Energy devices in the surrounding environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The application processor can concentrate on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>USB communication<\/li>\n\n\n\n<li>RTOS scheduling<\/li>\n\n\n\n<li>data parsing<\/li>\n\n\n\n<li>terminal output<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">while the BleuIO handles the Bluetooth side.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BleuIO&#8217;s own HibouAir gateway example similarly uses BleuIO to provide BLE communication to RP2040\/RP2350 development boards through USB.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Software Architecture<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The software in this project is based on <strong>myRTOS<\/strong> , a small real-time operating system environment running on the Fruit Jam.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The HibouAir application is started from the RTOS command interface:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>myrtos:\/&gt; hibouair<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once started, the application enters scanning mode:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">scanning; ctrl-C to stop<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The application then continuously processes incoming BLE data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conceptually, the software pipeline looks like this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HibouAir \u2192 BLE advertisements \u2192 BleuIO SSD025 \u2192 USB \u2192 Fruit Jam \/ myRTOS \u2192 HibouAir packet decoding \u2192 Terminal display<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The important point is that this is not simply a raw BLE packet monitor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The application turns the incoming wireless data into a <strong>human-readable sensor table<\/strong> .<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Run the Project<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The complete project is available on GitHub:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/smart-sensor-devices-ab\/Adafruit-Fruit-Jam-with-BleuIO\">https:\/\/github.com\/smart-sensor-devices-ab\/Adafruit-Fruit-Jam-with-BleuIO<\/a><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Connect the board:<\/strong> Connect the Adafruit Fruit Jam to your computer using a USB-C cable and turn the power switch ON.<\/li>\n\n\n\n<li>Hold down Button #1 (the UF2 BOOT button located on GPIO0), press and release the reset button while continuing to hold Button #1, and release Button #1 only after the bootloader drive appears.<\/li>\n\n\n\n<li>Drag the project&#8217;s <mark>.uf2<\/mark> file onto the board&#8217;s bootloader drive. The image includes myRTOS and the <mark>hibouair.c<\/mark> application module.<\/li>\n\n\n\n<li>Press the reset button to reboot the board.<\/li>\n\n\n\n<li><strong>Connect the BleuIO SSD025:<\/strong> Plug the BleuIO SSD025 into one of the Fruit Jam&#8217;s USB Type-A host ports.<\/li>\n\n\n\n<li><strong>Power the HibouAir sensor:<\/strong> Make sure one or more HibouAir sensors are powered on and within Bluetooth range of the BleuIO dongle.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Button Locations on the Adafruit Fruit Jam<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To enter UF2 bootloader mode, this project uses two buttons on the Fruit Jam:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Button #1 (UF2 BOOT)<\/strong> \u2014 located on GPIO0 towards the bottom-right edge of the board.<\/li>\n\n\n\n<li><strong>Reset button<\/strong> \u2014 located on the left edge of the board.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The image below shows the location of both buttons.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"723\" height=\"543\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-3.png\" alt=\"\" class=\"wp-image-1764\" style=\"aspect-ratio:1.3314917127071824;width:482px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-3.png 723w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-3-300x225.png 300w\" sizes=\"auto, (max-width: 723px) 100vw, 723px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After rebooting, open a terminal window and connect to the board.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Windows<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After rebooting, open Device Manager and identify the COM port assigned to the Fruit Jam. Connect to this port using a serial terminal such as PuTTY.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"357\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-4.png\" alt=\"\" class=\"wp-image-1765\" style=\"aspect-ratio:2.53781512605042;width:604px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-4.png 906w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-4-300x118.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-4-766x302.png 766w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">macOS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To find the Fruit Jam&#8217;s serial port, open a terminal and run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls \/dev\/cu.usbmodem*<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The command should return a device similar to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/dev\/cu.usbmodem2351xxxx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Connect to it using:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>screen \/dev\/cu.usbmodem2351xxxx<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"348\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-5.png\" alt=\"\" class=\"wp-image-1766\" style=\"aspect-ratio:2.603448275862069;width:604px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-5.png 906w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-5-300x115.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-5-765x294.png 765w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Real-Time HibouAir Scanning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After connecting to the Fruit Jam, start the HibouAir application from the myRTOS command interface:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>myrtos:\/> hibouair<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>scanning; ctrl-C to stop<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The program then prints a table containing the detected HibouAir devices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This gives the user an immediate overview of all the HibouAir sensors currently being received.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Expected Output<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For example, the output below shows several HibouAir devices detected during a scan. The table shows each detected device&#8217;s board identifier, Bluetooth address, sensor type and latest environmental measurements.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"183\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-6.png\" alt=\"\" class=\"wp-image-1767\" style=\"aspect-ratio:4.950819672131147;width:604px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-6.png 906w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-6-300x61.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/image-6-767x155.png 767w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Where Could This Go Next?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The current application concentrates on the essential task: receiving HibouAir advertisements and presenting the decoded measurements in real time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Logging the data to the Fruit Jam&#8217;s microSD card would also make it possible to create long-term air-quality datasets without requiring a permanently connected computer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Fruit Jam&#8217;s USB host capability, microSD storage and RP2350B processor make this type of expansion practical.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This project demonstrates how the Adafruit Fruit Jam, BleuIO SSD025 and HibouAir SSD002 can be combined to create a compact RP2350-based Bluetooth Low Energy air-quality gateway.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HibouAir sensors broadcast their environmental measurements over BLE. BleuIO receives these advertisements and transfers the data to the Fruit Jam over USB, where the myRTOS hibouair application decodes the sensor data and presents the latest measurements in real time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project shows how BleuIO can add BLE communication to an RP2350-based embedded system while keeping the Bluetooth interface separate from the main application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this project, we will look at how the BleuIO SSD025 Bluetooth Low Energy USB dongle can add BLE communication to an Adafruit Fruit Jam powered by the RP2350. The project takes an unusual software approach. Instead of running the HibouAir scanner as part of the native firmware, the Fruit Jam runs a custom real-time [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1771,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,2],"tags":[],"class_list":["post-1759","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bleuio","category-bleuio-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO - BleuIO - Create Bluetooth Low Energy application<\/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:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"In this project, we will look at how the BleuIO SSD025 Bluetooth Low Energy USB dongle can add BLE communication to an Adafruit Fruit Jam powered by the RP2350. The project takes an unusual software approach. Instead of running the HibouAir scanner as part of the native firmware, the Fruit Jam runs a custom real-time [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-18T12:23:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-18T14:17:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"670\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"BleuIO\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO\",\"datePublished\":\"2026-09-18T12:23:41+00:00\",\"dateModified\":\"2026-09-18T14:17:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/\"},\"wordCount\":1175,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp\",\"articleSection\":[\"BleuIO\",\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/\",\"name\":\"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp\",\"datePublished\":\"2026-09-18T12:23:41+00:00\",\"dateModified\":\"2026-09-18T14:17:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp\",\"width\":1200,\"height\":670,\"caption\":\"bleuio tutorial Adafruit Fruit Jam\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\",\"name\":\"BleuIO - Create Bluetooth Low Energy application\",\"description\":\"Learn Bluetooth Low Energy programming and build Bluetooth Low Energy Application\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\",\"name\":\"BleuIO\",\"sameAs\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/author\\\/biadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO - BleuIO - Create Bluetooth Low Energy application","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:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/","og_locale":"en_US","og_type":"article","og_title":"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO - BleuIO - Create Bluetooth Low Energy application","og_description":"In this project, we will look at how the BleuIO SSD025 Bluetooth Low Energy USB dongle can add BLE communication to an Adafruit Fruit Jam powered by the RP2350. The project takes an unusual software approach. Instead of running the HibouAir scanner as part of the native firmware, the Fruit Jam runs a custom real-time [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2026-09-18T12:23:41+00:00","article_modified_time":"2026-09-18T14:17:41+00:00","og_image":[{"width":1200,"height":670,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp","type":"image\/webp"}],"author":"BleuIO","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO","datePublished":"2026-09-18T12:23:41+00:00","dateModified":"2026-09-18T14:17:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/"},"wordCount":1175,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp","articleSection":["BleuIO","BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/","url":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/","name":"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp","datePublished":"2026-09-18T12:23:41+00:00","dateModified":"2026-09-18T14:17:41+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/09\/bleuio-tutorial-Adafruit-Fruit-Jam-1.webp","width":1200,"height":670,"caption":"bleuio tutorial Adafruit Fruit Jam"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/running-a-hibouair-ble-air-quality-scanner-on-adafruit-fruit-jam-with-bleuio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Running a HibouAir BLE Air Quality Scanner on Adafruit Fruit Jam with BleuIO"}]},{"@type":"WebSite","@id":"https:\/\/www.bleuio.com\/blog\/#website","url":"https:\/\/www.bleuio.com\/blog\/","name":"BleuIO - Create Bluetooth Low Energy application","description":"Learn Bluetooth Low Energy programming and build Bluetooth Low Energy Application","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bleuio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80","name":"BleuIO","sameAs":["https:\/\/www.bleuio.com\/blog"],"url":"https:\/\/www.bleuio.com\/blog\/author\/biadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/comments?post=1759"}],"version-history":[{"count":3,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1759\/revisions"}],"predecessor-version":[{"id":1773,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1759\/revisions\/1773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/1771"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=1759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=1759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=1759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}