Monitoring Black Carbon
The bcMeter is an open-source optical absorption photometer for measuring Black Carbon (BC), or soot, in air. It can be used for ambient monitoring as well as direct emission measurements, for example near wood stoves.
The device has no built-in screen. It serves a local web page that opens on a smartphone or computer in the same network.
A Quick Start Guide / Cheat Sheet is available alongside this manual.
If your device is not installed in a rugged case, skip the case-specific steps and continue with Section 2.3.
Before starting, do this quick check:
The device can create its own WiFi network. It does this on first boot and whenever no known network is available. You can also enable the hotspot later in Settings.
bcMeterbcMeter - it is case sensitive.http://192.168.18.8 into the address bar. The device will also open this page automatically. The Welcome screen appears on first use (see Section 2.5).The physical blue LED on the device provides a quick hardware status indication:
| LED Pattern | Meaning |
|---|---|
| Steady dim light | The device has not fully or correctly started, or it has been shut down. |
| Slow pulse | The device is idle and ready. Pump is off. |
| Fast pulse | A measurement session is running. |
On first use, bcMeter shows a two-step welcome screen for email and network setup.
Step 1 - Notification email
Enter the email address where bcMeter should send status messages and alerts. After WiFi setup, the device can send its local access link and connection details to this address.
Step 2 - Connect to network
Select your WiFi network, enter the password, and click Connect. Use Scan to refresh the list, or Enter manually if the network is hidden. The device hostname (e.g. bcmeter-0110.local) is shown in the captive-portal note - bookmark it to access your device later on your local network.
After connecting, the setup hotspot turns off and bcMeter joins your network. Check your email for the interface link. Also check spam folders. Devices with a modem can also use cellular connectivity for status, location lookup, or data delivery, depending on the installed hardware.
When the device is on your network, open it by hostname. The default hostname follows the pattern bcmeter-XXXX. For example:
http://bcmeter-A3AB.localhttp://ebcmeter-A3AB.localThe exact hostname is shown on the device label and in the Welcome email. You can also rename the device in Settings > Device > Device Name.
.local addresses do not work (common on some Windows networks or older routers), you will need to find the device's IP address in your router's administration interface or connect by the IP from onboarding email received after initial configuration.
Use the moon/sun button on the right side of the navigation bar to switch between light and dark mode. The browser remembers your preference for the next visit.
| Status | Meaning |
|---|---|
| Ready | Device is idle. Pump is off. |
| Initializing | Pump is priming and the optical chamber is warming up. Data is not yet recorded. |
| Running | Active measurement. Data is being saved. |
| Error | System error detected. Open System Status or download logs in the Maintenance menu. |
Normally, time syncs automatically. If the device clock is not synced, it shows "Time: not synced" in red. Use Maintenance > Time Synchronization to sync the device clock with your browser.
The "Filter" indicator shows how much of the filter strip is loaded. The color changes with loading level:
The interactive chart renders time-series data as it arrives from the device. Because the underlying optical signal is analog, the trace will appear jagged and noisy - this is normal. Smoothed values (Median, EMA) are typically closer to the true concentration. After starting a session the chart remains empty until 3-4 samples have been collected; at the default 5-minute sample interval this means the first data point appears after roughly 15-20 minutes.
Click and drag horizontally on the chart to zoom into a time window. Double-click anywhere on the chart to reset the zoom back to the full session view.
The controls below the chart include:
Each axis row (Y1, Y2, and optional additional axes via + Add axis) contains:
These parameters can be assigned to Y1, Y2, or added axes:
| Reference (880nm) | Light intensity from the 880nm LED passing through an unused, clean portion of the filter - serves as baseline for comparison. Optional wavelengths: 520nm, 370nm (if multi-wavelength hardware is installed). |
| Sensor (880nm) | Light intensity from the 880nm LED after passing through the particle-loaded spot on the filter. |
| Attenuation (880nm) | Calculated reduction in light intensity caused by light-absorbing particles collected on the filter. |
| BC Unfiltered (880nm) | Real-time, high-resolution black carbon concentration without smoothing or averaging filters. |
| Black Carbon (880nm) | Black carbon concentration in ng/m³, derived from the primary 880nm measurement wavelength. |
| Relative Load | Filter spot saturation level (percentage), indicating when filter replacement is needed. |
| Ångström Exponent | Ratio indicating aerosol source characteristics (requires multi-wavelength hardware). |
| Temperature (°C) | Internal operating temperature - important for measurement stability. |
| Humidity (%) | Relative humidity inside the device (if sensor equipped). |
| Air Flow (l/min) | Current airflow rate through the filter (if flow sensor equipped). |
| Air Pressure (hPa) | Atmospheric pressure from the onboard barometric sensor. Used for altitude estimation and pressure-corrected BC calculations. Optional - only available if a pressure sensor (BME280) is installed. |
| PM2.5 (µg/m³) | Fine particulate matter concentration (particles ≤ 2.5 µm). Optional - requires an SPS30 particulate matter sensor. |
| PM10 (µg/m³) | Coarse particulate matter concentration (particles ≤ 10 µm). Optional - requires an SPS30 particulate matter sensor. |
Click Settings to configure the device. Settings are organized into tabs: Network, Measurement, Device, and Email.
The developer settings are not part of this manual but are explained in the wiki on bcmeter.org.
The Network tab manages wireless connectivity and is the default view when opening Settings.
| WiFi | Scan for available networks, select a network, and enter a password to connect the device to your existing WiFi. Use "Forget Network" to forget the stored network and switch back to hotspot mode. |
| Hotspot Mode | Forces the device to create its own WiFi network, even if a known network is available. |
| Protect hotspot with WPA2 key | When enabled, secures the bcMeter hotspot with a custom password instead of the default. Minimum 8 characters. |
If you skipped WiFi setup on the welcome screen, or need to change the network later, use the Network tab:
The Network tab also lets you configure the device hotspot. Enable Run hotspot when no WiFi available so the device creates its own access point as a fallback. You can optionally protect the hotspot with a WPA2 key.
Click Forget Network to disconnect from your stored network and force the device to create its hotspot again.
These settings define the sampling interval, airflow, location handling, and related measurement behavior. When Auto Flow Control (AFC) is active, a banner shows the current AFC limits.
| Time between samples | Default: 300s (5 min). Adjustable via slider from 30s to 1 hour. • Ambient monitoring: 180-600s. • Emission source monitoring: 10-30s. Increasing frequency may increase noise. |
| Airflow per minute | Default: 300 ml/min. Adjustable via slider from 50 to 750 ml/min. Higher flow improves signal but loads filter faster. • Daily average >2000 ng/m³: reduce airflow. • Daily average <500 ng/m³: increase airflow. • Typical urban (~500 ng/m³): 100-250 ml/min. Disabled when Auto Flow Control is active. |
| Auto-adjust airflow | Adjusts airflow from the measured BC concentration. High BC lowers the flow to protect the filter; low BC raises the flow for a stronger signal. The manual airflow slider is locked while AFC is active. |
| Target filter lifetime | Default: 7 days. Target service life for the filter. AFC uses this value when calculating the airflow setpoint. |
| Auto-start logging | Starts a measurement session after boot. Requires prior calibration. See Shutdown Device in Section 4.3 for power-loss recovery behavior. |
| Mobile measurement mode | For moving measurements. Location data is written for each sample when location hardware or geolocation data is available. |
| Outdoor measurement | Marks the measurement as outdoor ambient monitoring. Disable it for indoor or direct emission measurements. |
| Pressure correction | Applies ambient pressure correction when a BME280 pressure sensor is installed. |
| Location | Controls how geographic coordinates are recorded with measurement data:
• Automatic: Uses the best available source - GPS module (optional, ~5 m accuracy), cellular modem cell tower lookup (optional, requires 4G module, ~1 km accuracy), or IP-based geolocation (~10-50 km accuracy). • Manual: Enter latitude and longitude manually (paste from Google Maps). • Off: No location data is stored. |
An Airflow Reference table is displayed below the settings, showing estimated filter lifetime (in days) at different BC concentrations and airflow rates to help choose the right airflow.
| Timezone | Select the device's timezone for accurate timestamps in log files. |
| Warm-up time | Default: 10 min. Adjustable via slider from 0 to 2 hours. Duration for the optical chamber to stabilize before measurement data is recorded. Set to 0 to disable warm-up. |
| Disable blinking LED | Deactivates the status LED on the device. |
| Device Name | Network hostname (e.g., bcmeter201). Also sets the mDNS name, so the device becomes reachable as name.local after renaming and rebooting. |
Use this tab for email delivery of log files, filter status alerts, and optional data sharing with the bcMeter project. Provisioned devices already include the required mail service setup. DIY and development details are in the bcMeter wiki.
| Periodic log sending | Master switch enabling automatic, timed email delivery of CSV log files. |
| Send logs every | Adjustable via slider from 3 hours to 7 days. Default: 24 hours. |
| Recipient addresses | Destination email addresses (comma-separated). |
| Filter status mail | Sends an alert when filter loading exceeds 70%. Alerts repeat every 12 hours and include device name and location. |
| Detailed diagnostic emails | Adds extra device context to automatic emails. Enable only when support asks for it. |
| Share data with bcMeter team | Share measurement data with the bcMeter project for maps and analysis. |
Access via the Maintenance button in the navigation bar. The modal is organized into cards for device management, system status, time synchronization, and - when location services are active - geolocation.
The Device Management card is split into two columns:
Routine Maintenance
System Operations
Shows the current device state:
Accurate timestamps need a correct device clock. Devices with internet access sync automatically via NTP. For offline or hotspot-only devices, use manual sync here.
When location services are active (Settings > Measurement > Location), the Geolocation card shows position and altitude data. Available fields depend on the installed hardware modules.
Filters may vary slightly in optical density over their surface and signals may slightly vary over time. Calibration balances the sensor signal against the reference signal for the specific filter currently installed.
Data is stored on the device's internal storage. To manage your session files:
Log files are downloaded as CSV for analysis. The dashboard's Download View button can additionally export the currently visible chart view as CSV, PNG, or SVG. CSV files use semicolon separation with dot as decimal divider.
| Issue | Likely Cause & Solution |
|---|---|
| Negative data over a longer period of time | Environment. Avoid direct sunlight and heat sources (see Section 7 Best Practices). If the issue persists, contact support. |
| Device keeps restarting | Power Supply. Cable too long or thin - see power requirements in Section 2.1. |
| WiFi unstable or disconnects | Voltage instability or weak signal strength. The hotspot may temporarily disappear for 2-3 minutes while self-recovering - it will return automatically. |
| No WiFis listed in setup | Reload the interface to re-initialize the network scan. |
| No Data on Graph | Sampling Interval. The chart needs 3-4 samples before it can render (see Section 3.3). Check that a session is running and wait for the first samples to arrive. |
| Pump noise when stopped | Motor controller logic error (signal state latch). Go to Maintenance > Reboot Device or start a new log and stop right after initialization. |
| Pump stall / no airflow | The device has automatic stall protection. If flow drops below a minimum threshold for 3 seconds, the system attempts recovery by increasing pump power. After 4 failed recovery attempts, the measurement stops with a pump error. Check for blocked tubing, a saturated filter, or hardware issues. |
| "Time: not synced" warning | Device clock not synchronized. Internet-connected devices sync automatically; for offline devices, use Maintenance > Time Synchronization (see Section 4.3). |
| Email notifications not working | Check that periodic email sending is enabled and at least one valid recipient address is configured. For DIY or development devices, verify the mail service provisioning with the bcMeter team. |