All Ears. Squachy went to work on a wrist and came home deaf. Not a little deaf. Both ears. He could point straight at a Bluetooth tracker and hear nothing, and the only thing that fixed him was switching the whole watch off and on, which is a terrible thing to have to say to a detector. That's over. This release is mostly about one bug, and the bug is dead.
What was wrong. Every board starts its WiFi, then tears it down and starts it again smaller, to leave memory for the radios. On the watch's newer chip that second start sometimes raced its own teardown and came up with the receiver switched off, and once it had, every restart did the same. The watch keeps the first, full-size WiFi now, and every board gets a ten millisecond breath between the teardown and the rebuild, found and bisected on a different board by DH5DAX the very same day. Both fixes, belt and braces. A full day and night on a wrist since, and not one deaf minute.
He buzzes like he means it. The motor driver was reading from its table for a smaller motor than the watch actually has. It reads the right one now, and the difference is not subtle. BUZZ has four settings: OFF, HIGH, MED and LOW. MED is the default and plenty. HIGH is for people who like being startled, and LOW is the old little tap, for people who miss it.
WATCH SETTINGS is a page now. The watch grew too many rows to leave on the main list, so they moved. WATCH SETTINGS is the first row, and behind it live the battery reading, the radio rest cycle, how much of the time Bluetooth listens (25, 50 or 75 percent), what speed the chip idles at when the screen is off, the buzz, and a RADIO RESET button for the day you think the radios are being weird. Everything is a tap to change, and everything can be turned all the way up if you like your watch loud and lit.
He knows when he's on the nightstand. The watch has a motion sensor, and now he uses it. With POWER SAVER on, a device that keeps bobbing in and out of range gets five wakes and then has to actually come closer, and a watch that hasn't moved stops handing those five back every half hour. Your own doorbell camera does not need to wake you at three in the morning. Fourteen times.
A new board. The Freenove 3.2 inch CYD is on the flasher, with its IPS screen and resistive touch. The listing calls the touch capacitive. It is not, and it works either way. Pin work by DevOpsDAdams, who got there before us.
Housekeeping. The boot-loop counter and its IGNORE button are gone. Nobody has boot looped in months, and it mostly complained about being flashed. The crash card stays. And the alert card has said GAMERA for a camera since the very first commit. Nobody noticed. It says CAMERA now, and Squachy is a little sad about it.
The actually-useful part
Added
- A WATCH SETTINGS page on the T-Watch S3, the first row on the main list: BATTERY, RADIOS, BLE LISTEN, SLEEP CPU, BUZZ, RADIO RESET and CHIP TEMP, plus two bench rows from the radio hunt, STEADY POWER and CLOCK CHECK.
- BLE LISTEN (25, 50 or 75 percent of each 100 ms) and SLEEP CPU (80, 160 or 240 MHz while the screen is asleep) on the watch, both under POWER SAVER. Defaults 25 percent and 80 MHz. On the cable the watch listens at 75 either way.
- BUZZ levels OFF, HIGH, MED and LOW on the watch, MED by default. A watch that had BUZZ off stays off.
- AUTO SNOOZE is held at 5 on the watch while POWER SAVER is on, and a watch that is sitting still only hands a device its five wakes back once it has really been gone for half an hour.
- RADIO RESET on the watch: two taps, a one second deep sleep, and a full boot.
- A radio self-heal on the watch: two minutes of Bluetooth hearing nothing at all and it restarts itself, at most twice in a row.
- The Freenove 3.2 inch CYD (FNK0103L) on the flasher: ST7789, resistive touch on the display bus, RGB light on 22, 16 and 17.
- Channel hopping gives busy WiFi channels more of each four second sweep and silent ones a quick look, on every board. On the watch a new Bluetooth address during a WiFi rest opens the WiFi window early, and the next rest is longer to match, so the on-time is unchanged.
- The watch's battery log keeps the chip temperature and how much each radio had heard, and notes the reason for every restart.
- A CHIP TEMP row on the watch.
Changed
- POWER SAVER is switched on once on every existing watch. It was already the default for a fresh install.
- The watch keeps the Arduino core's full WiFi driver instead of the slim re-init the CYDs use.
- The haptic driver sleeps between buzzes.
- The squad invite's listening boost goes back to the watch's chosen BLE LISTEN afterwards, not to a fixed 75.
- The boot-loop counter and its IGNORE button are removed. The crash card after a real crash stays.
- A lab build no longer replaces the public watch install's files, and hides a board the release does not carry yet instead of offering a choice that fails.
Fixed
- The T-Watch S3's radios coming up deaf and staying deaf through restarts and reflashes: the slim WiFi re-init racing its own teardown on the ESP32-S3. Every board now waits ten milliseconds between esp_wifi_deinit() and esp_wifi_init(), by DH5DAX (#10).
- The alert card's GAMERA.
- The Freenove's status light was driving the audio amplifier's enable pin as red.
