AirGradient ONE - Install & Wi-Fi Issues


I just received an AirGradient ONE DIY kit. I ran into one odd issue with the install that I was able to resolve, but just an FYI for others: The enclosure screws can’t be screwed in with the included tool; it doesn’t provide enough torque. I had to screw them in with a separate, larger T6 screw driver that has more torque.

The bigger issue: the device is up and running but the Wi-Fi hotspot is nowhere to be found. The unit displays all yellow LEDs and shows air quality info on the screen, but there is no Wi-fi hotspot to connect to.

Any idea how to fix this?


I was able to assemble mine with the included screwdriver.

Mine also had the hotspot appear as expected. You could try flashing the software again, as maybe there has been an update. I think the hotspot only appears for the first 5 minutes, so try power cycling it again and looking for the hotspot about 1 minute later

The AirGradient ONE Air Quality Sensor (Presoldered-Version, PCB Version 9)

I guess I’ll have to try to reflash - maybe I received a different version? I’ve ordered 5 of these. I just assembled a second one and it has the same issue. Initial startup and all subsequent startups do not start any hotspot for me to connect to.

Achim here. Please try and reflash through the website. In case you still have issues please contact me by email and we can trouble shoot it directly.
Did you get the version 4.2 or new version 9 of the PCB?

Hello Achim,

Thanks for responding. I have version 9 of the PCB. Out of the box, this is what the logs show:

3 2 1 
...............WiFi connection FAILED
Error in readSample()
WiFi Disconnected

After reflashing the device, the Wi-Fi works. I did not check the “erase device” checkbox, should I? Here are the details from the updated device:

	Build Date
Nov 11 2023 15:58:34

The device seems to be streaming data correctly to the dashboard; however, I see the following in the logs - is this normal?

Watchdog reset
Error in readSample()
{“wifi”:-44, “rco2”:713, “pm01”:0, “pm02”:0, “pm10”:0, “pm003_count”:48, “tvoc_index”:0, “nox_index”:0, “atmp”:-10001.00, “boot”:5}

The last issue is that the device seems to lose and not reconnect to wifi after it is rebooted. Let me know if you’d like me to contact you directly or keep the discussion going in this forum.


Quick update: the temperature and humidity also disappear from the display and reappear every few minutes.

The temperature and humidity needs a little bit of time to stabilize but we are working on a software update as well.

Okay - the devices have been on for a few days now and the temp and humidity usually show blank and the Wi-Fi settings are lost on reboot.

Will the software update fix these two issues and do you have an ETA for release? Thanks.

@CleanAir I have just pushed a new update.

Then click on the orange button to flash.

This should fix the temp/hum and wifi issues.

Arduino code is here:

Thank you. I flashed the device and here are my observations:

  • The temperature and humidity are stablizied, but I’m still getting intermittent watchdog errors in the logs - do you know why?

  • The WiFi issue is still present. I can get the device to connect to my AP, but as soon as I cycle power it does not reconnect and I have to setup the WiFi every time. Here are the logs:

Build:Feb  7 2021
Saved PC:0x420543f8
mode:DIO, clock div:1
entry 0x403ce000
in setConfig
buttonConfig: 2
...............WiFi connection to SSID airgradient failed
*wm:[1] AutoConnect 
*wm:[2] ESP32 event handler enabled 
*wm:[2] Connecting as wifi client... 
*wm:[2] setSTAConfig static ip not set, skipping 
*wm:[1] Connecting to SAVED AP: airgradient
E (14503) wifi:sta is connecting, return error
*wm:[1] connectTimeout not set, ESP waitForConnectResult... 
*wm:[2] Connection result: WL_NO_SSID_AVAIL
*wm:[1] AutoConnect: FAILED 
*wm:[2] Starting Config Portal 
*wm:[2] Disabling STA 
*wm:[2] Enabling AP 
*wm:[1] StartAP with SSID:  AG-<serial number>
*wm:[2] AP has anonymous access! 
*wm:[1] AP IP address:
*wm:[1] Starting Web Portal 
*wm:[2] HTTP server started 
*wm:[2] WiFi Scan ASYNC started 
*wm:[2] Config Portal Running, blocking, waiting for clients... 
*wm:[2] Portal Timeout In 180 seconds
*wm:[2] WiFi Scan ASYNC completed in 3621 ms
*wm:[2] WiFi Scan ASYNC found: 31
*wm:[2] Portal Timeout In 164 seconds
*wm:[2] Portal Timeout In 134 seconds
*wm:[2] Portal Timeout In 104 seconds
*wm:[2] Portal Timeout In 74 seconds
*wm:[2] Portal Timeout In 44 seconds
*wm:[2] Portal Timeout In 14 seconds
*wm:[1] config portal has timed out 
*wm:[2] shutdownConfigPortal 
*wm:[2] restoring usermode STA
*wm:[2] wifi status: WL_DISCONNECTED
*wm:[2] wifi mode: STA
*wm:[2] configportal closed 
*wm:[1] config portal exiting 
failed to connect and hit timeout
WiFi Disconnected

@Achim_AirGradient, if I’m reading this code correctly, it tries to connect to an airgradient SSID instead of the saved SSID. Is that the issue?

if (connectWIFI) {
    WiFi.begin("airgradient", "cleanair");
    int retries = 0;
    while ((WiFi.status() != WL_CONNECTED) && (retries < 15)) {
    if (retries > 14) {
      Serial.println(F("WiFi connection to SSID airgradient failed"));
      if (connectWIFI) connectToWifi();
    if (WiFi.status() == WL_CONNECTED) {
      if (WiFi.SSID() == "airgradient") {
      Serial.println(F("WiFi connected!"));
      Serial.println("IP address: ");
  updateOLED2("Warming Up", "Serial Number:", String(getNormalizedMac()));

I could reproduce the error and provided a fix.
Easiest is to just use the web flasher and flash version 0.0.11


Updated code is available here:

1 Like

I have received the new version today, and also no wifi AP visible.
And errors in readSample() and restarts of the device so i need to flash it on macos.

I am new with flashing. I followed the installation for the libraries but miss the PMS.h it gives me the error:
Documents/Arduino/ONE_V9/ONE_V9.ino:32:10: fatal error: PMS.h: No such file or directory
32 | #include <PMS.h>
| ^~~~~~~
compilation terminated.

exit status 1

Compilation error: PMS.h: No such file or directory

Searching the web for some time now, but thought i could ask here.
Perhaps it is a stupid question but i searched the libraries on pms.h but cant find it.

This worked - thank you! I’m still seeing intermittent watchdog resets in the logs - do you know if this is normal or how to fix?

There are a couple of steps you need to follow to get flashing from the Arduino software working. The benefit is that you don’t need to hold the “BOOT” button when flashing like you do from the web interface and you’re able to make tweaks to the code to see what works - this is how I discovered the issue with Wi-Fi.

First, install these dependencies:

The codes needs the following libraries installed:
“WifiManager by tzapu, tablatronix” tested with version 2.0.11-beta
“U8g2” by oliver tested with version 2.32.15
"Sensirion I2C SGP41" by Sensation Version 0.1.0
"Sensirion Gas Index Algorithm" by Sensation Version 3.2.1
"Arduino-SHT" by Johannes Winkelmann Version 1.2.2
"Adafruit NeoPixel" by Adafruit Version 1.11.0

Next, follow these instructions which will address your PMS.h missing dependency error: Reading Temperature and Humidity from Plantower PMS5003T

@Achim_AirGradient - you might want to include the above link in the dependency list of ONE_V9.ino. This tripped me up too until I found that page. Thanks.

This is a normal log message. The external hardware watchdog needs to be reset periodically to prevent an automatic reboot of the device.

1 Like

Yes I will improve the documentation.

By the way, most of the time I also don’t need to press the boot button on the web flasher. I think there is no difference to the Arduino IDE in terms of that.

1 Like

Thnx for the reply. I the mean time indeed found the section for correcting the cpp and h file. Also installed the pms library. Working on it right now.

No Problem. By the way, I was just able to get these sensors to connect to Home Assistant with @MallocArray 's initial commit for the v9 board:

It changes the display, but it successfully streams to both the AirGradient dashboard and my Docker-based Home Assistant dashboard. I think I prefer @Achim_AirGradient 's OOTB display, but I’ll play around with that later.

Time to assemble the other AirGradients I purchased!

Compiling and uploading worked without errors.
Unfortunately no response from the device, lcd screen stays black.
The Co2 sensor led on the inside blinks but further no function.

assert failed: i2c_ll_cal_bus_clk /IDF/components/hal/esp32c3/include/hal/i2c_ll.h:105 (clk_cal->scl_wait_high < clk_cal->sda_sample && clk_cal->sda_sample < clk_cal->scl_high)
Core 0 register dump:
MEPC : 0x4038219a RA : 0x40386f16 SP : 0x3fc9ec80 GP : 0x3fc8ec00
TP : 0x3fc716f8 T0 : 0x656c706d T1 : 0x6d61735f T2 : 0x61735f61
S0/FP : 0x00000001 S1 : 0x3fc9ee60 A0 : 0x3fc9ece4 A1 : 0x3fc906e1
A2 : 0x00000001 A3 : 0x00000029 A4 : 0x00000001 A5 : 0x3fc97000
A6 : 0x6c63203c A7 : 0x20656c70 S2 : 0x00000017 S3 : 0x3fc9ecd8
S4 : 0x3fc9ecd8 S5 : 0x420299a4 S6 : 0x00000002 S7 : 0x3c0cc678
S8 : 0x00000000 S9 : 0x00000000 S10 : 0x00000000 S11 : 0x00000000
T3 : 0x6164733e T4 : 0x2d6c6163 T5 : 0x5f6b6c63 T6 : 0x20262620
MSTATUS : 0x00001801 MTVEC : 0x40380001 MCAUSE : 0x00000007 MTVAL : 0x00000000
MHARTID : 0x00000000