DD-WRT Upgrade part two

The upgrade of DD-WRT that I performed this last Saturday brought the version from a 2019 release to a 2022 release. DD-WRT always recommends doing a factory reset of settings before and after flashing a new firmware. As far as I’ve been able to find out, DD-WRT doesn’t provide any way to back up the settings in any form other than a binary download that is not compatible between versions. This shortcoming makes upgrading a router with many customized settings a difficult process.

dd-wrt status screen

I performed the flash upgrade without resetting everything to defaults. It wasn’t until I was going to bed on Saturday night that I realized not all things were working properly. All of the ipv4 services appeared to be working properly. The ipv6 services were not working properly on my internal network clients.

I have a Microsoft Windows Server 2016 Essentials machine running several services including file sharing on my internal network. I also have my Windows 10 desktop, and several Raspberry Pi machines. Some of the Pi machines access the file shares on the server for both reading and writing.

I’ve found that when ipv6 is not allocating global addresses for the windows server and clients, file sharing doesn’t work properly. This is an issue I don’t understand, and don’t want to change the default operation of the windows server or windows client machines, which might create more long term maintenance headaches.

Among the customizations I have set in the router:

  • Router Name
  • Domain Name
  • Local IP (v4) address is instead of
  • close to 35 DHCP reservations for machines that run on my internal network.
  • IPv6 enabled and configured for DHCPv6 with Prefix Delegation
  • DDNS service configured as in previous post.
  • Wireless SSID
  • Wireless Password
  • SSH access to the router with rsa keys entered for allowed machines.

I figured out that the primary settings for DHCP and DNS resolution are run using dnsmasq, and the configuration file can be viewed by looking at /tmp/dnsmasq.conf in the ssh console. All of the dns reservations are listed in the form of:


Copying all of them out of the console as one entry and adding them to the Additional Dnsmasq Options field was much easier than pasting MAC addresses, Hostnames, and IP addresses into separate field for each entry.

After adding them via the web interface here, they look exactly like the entries created in the static leases section of the interface. I was hoping that the system would parse them and display them in the static leases section, but it doesn’t seem to do that.

My SSH terminal program is configured to send a series of commands to the console each time I connect which reminds me of the current setup as well as how to examine it after a long time when I’ve not worked on the device.

  • date ; uptime
  • route -A inet
  • route -A inet6
  • ip6tables -vnL
  • cat /tmp/dnsmasq.conf
  • cat /tmp/dhcp6c.conf
  • cat /tmp/radvd.conf
  • ifconfig

I’m currently not dumping the iptables (v4) output simply because there are a large number of rules that don’t get used which takes up a lot of extra space scrolling by.

I’ve compared the ipv4 and ipv6 routes from when ipv6 was not working, and they are identical.

root@Netgear-R7000:~# route -A inet
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         br1-mballard-v1         UG    0      0        0 vlan2    *      U     0      0        0 vlan2       *            U     0      0        0 lo     *        U     0      0        0 br0
root@Netgear-R7000:~# route -A inet6
Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
2604:4080:1304::/64                         ::                                      UA    256    0        0 vlan2   
2604:4080:1304:8010::/60                    ::                                      U     256    0        0 br0     
fe80::/64                                   ::                                      U     256    0        0 eth0    
fe80::/64                                   ::                                      U     256    0        0 vlan1   
fe80::/64                                   ::                                      U     256    0        0 eth1    
fe80::/64                                   ::                                      U     256    0        0 eth2    
fe80::/64                                   ::                                      U     256    1       23 br0     
fe80::/64                                   ::                                      U     256    0        0 vlan2   
::/0                                        fe80::22c:c8ff:fe42:24bf                UGDA  1024   2      302 vlan2   
::/0                                        ::                                      U     2048   2       38 vlan2   
::/0                                        ::                                      !n    -1     1      372 lo      
::1/128                                     ::                                      Un    0      3       15 lo      
2604:4080:1304::/128                        ::                                      Un    0      1        0 lo      
2604:4080:1304:0:b27f:b9ff:fe83:6590/128    ::                                      Un    0      3       75 lo      
2604:4080:1304:8010::/128                   ::                                      Un    0      1        0 lo      
2604:4080:1304:8010:b27f:b9ff:fe83:6591/128 ::                                      Un    0      3       64 lo      
fe80::/128                                  ::                                      Un    0      1        0 lo      
fe80::/128                                  ::                                      Un    0      1        0 lo      
fe80::/128                                  ::                                      Un    0      1        0 lo      
fe80::/128                                  ::                                      Un    0      1        0 lo      
fe80::/128                                  ::                                      Un    0      1        0 lo      
fe80::/128                                  ::                                      Un    0      1        0 lo      
fe80::b27f:b9ff:fe83:658f/128               ::                                      Un    0      1        0 lo      
fe80::b27f:b9ff:fe83:658f/128               ::                                      Un    0      1        0 lo      
fe80::b27f:b9ff:fe83:6590/128               ::                                      Un    0      3       61 lo      
fe80::b27f:b9ff:fe83:6591/128               ::                                      Un    0      1        0 lo      
fe80::b27f:b9ff:fe83:6591/128               ::                                      Un    0      3       24 lo      
fe80::b27f:b9ff:fe83:659e/128               ::                                      Un    0      1        0 lo      
ff00::/8                                    ::                                      U     256    0        0 eth0    
ff00::/8                                    ::                                      U     256    0        0 vlan1   
ff00::/8                                    ::                                      U     256    0        0 eth1    
ff00::/8                                    ::                                      U     256    0        0 eth2    
ff00::/8                                    ::                                      U     256    2      580 br0     
ff00::/8                                    ::                                      U     256    2       12 vlan2   
::/0                                        ::                                      !n    -1     1      372 lo      

I’ve looked at the ip6tables, and it also appears identical, beyond the counters.

root@Netgear-R7000:~# ip6tables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   12  2289 ACCEPT     all      *      *       ::/0                 ::/0                 state RELATED,ESTABLISHED
    5   376 ACCEPT     icmpv6    *      *       ::/0                 ::/0                
    0     0 ACCEPT     all      *      *       fe80::/64            ::/0                
    0     0 ACCEPT     all      br0    *       ::/0                 ::/0                
    0     0 ACCEPT     all      *      *       ::/0                 ::/0                

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all      *      *       ::/0                 ::/0                 state RELATED,ESTABLISHED
    0     0 ACCEPT     all      *      vlan2   ::/0                 ::/0                
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0                 ipv6-icmptype 128 limit: avg 2/sec burst 5
    0     0 ACCEPT     all      *      *       ::/0                 ::/0                

Chain OUTPUT (policy ACCEPT 31 packets, 4287 bytes)
 pkts bytes target     prot opt in     out     source               destination         

I’d tried disabling Radvd on the IPv6 configuration gui and adding “enable-ra” to the Additional Dnsmasq Options, but that didn’t fix my problems. The current configuration has matching radv.conf files to the non working version.

root@Netgear-R7000:~# cat /tmp/radvd.conf
interface br0
 IgnoreIfMissing on;
 AdvSendAdvert on;
 MinRtrAdvInterval 3;
 MaxRtrAdvInterval 10;
 AdvHomeAgentFlag off;
 AdvManagedFlag off;
 AdvOtherConfigFlag on;
 AdvLinkMTU 1452;
 prefix 2604:4080:1304:8010::/64 
  AdvOnLink on;
  AdvAutonomous on;
  AdvValidLifetime 30;
  AdvPreferredLifetime 20;
 RDNSS 2607:f060:2::1 2607:f060:2:1::1{};

I spent a lot of time reading up on IPv6 and reminding myself of things I’d known in the past and forgotten. https://blog.dorianbolivar.com/2018/09/going-full-ipv6-with-dd-wrt.html?lr=1 is a well written post with links to more sources that I found especially helpful as it was written specifically using DD-WRT and IPv6. My only issue is that it was written nearly four years ago and may not have the same options in the DD-WRT gui as are currently available.

One of the items I added to the Additional Dnsmasq Options was a couple of host entries so that dnsmasq would resolve IPv6 addresses for my windows machines. It seems to speed up the IPv6 name discovery of my windows server while still pointing default DNS resolution at the router.

host-record entries

My conclusion is that I don’t understand what was different in the non-functioning setup I had with holdovers from the older version of DD-WRT, and going through the pain of re-installing from factory fresh configuration after each upgrade is worth the trouble. I’m still not satisfied with the best way of retrieving all of the configuration data into a text file that I can later run a difference test to see what’s changed, or needs to be changed.

DD-WRT upgrade?

I’ve been running DD-WRT on my Netgear r7000 router at home for quite a while. I have had it configured to update a dynamic dns entry using No-IP.com, and was thinking of trying out the dynamic dns details directly in google domains. The upgrade instructions for dd-wrt recommend flashing the configuration to factory settings after any upgrade, and then reconfiguring the unit. While I understand the reasoning, I find it extremely frustrating.

Here’s what the ssh login looked like before I upgraded:

DD-WRT v3.0-r39960M kongac (c) 2019 NewMedia-NET GmbH
Release: 06/08/19
Board: Netgear R7000

BusyBox v1.30.1 (2019-06-08 11:12:49 CEST) built-in shell (ash)

root@Netgear-R7000:~# uptime
 17:31:02 up 269 days,  3:42,  load average: 0.01, 0.03, 0.00

This is what the same login looked like after I upgraded.

DD-WRT v3.0-r48810 std (c) 2022 NewMedia-NET GmbH
Release: 05/06/22
Board: Netgear R7000
     ___  ___     _      _____  ______       ____  ___ 
    / _ \/ _ \___| | /| / / _ \/_  __/ _  __|_  / / _ \
   / // / // /___/ |/ |/ / , _/ / /   | |/ //_ <_/ // /
  /____/____/    |__/|__/_/|_| /_/    |___/____(_)___/ 
                       DD-WRT v3.0


BusyBox v1.35.0 (2022-05-06 03:36:35 +07) built-in shell (ash)

root@Netgear-R7000:~# uptime
 18:12:45 up 5 min,  load average: 0.31, 0.24, 0.11

I was hoping that the dynamic dns client section would list google domains as a protocol option, or even specifically as a service choice. While it does not, the interface has the ability to use custom settings.

No-IP DDNS setting

When I attempted to use the custom settings to directly update google domains, I was getting an error. I figured out that dd-wrt appears to be using https://github.com/troglobit/inadyn as it’s DDNS client code, but is using an old version. I’m not sure it is communicating the way google wants, and after spending 20 minutes fiddling with the settings, and getting an ugly looking error code full of html, I decided to let this sit for a while.

Sat May  7 18:40:55 2022: INADYN: Started 'INADYN Advanced version 1.96-ADV' - dynamic DNS updater.
Sat May  7 18:42:11 2022: W:'RC_DYNDNS_INVALID_RSP_FROM_IP_SERVER' (0x42) updating the IPs. (it 0)
Sat May  7 18:53:22 2022: I:INADYN: IP address for alias 'www.wimsworld.com' needs update to 'xxx.xxx.xxx.xxx'
Sat May  7 18:53:22 2022: W:INADYN: Response Code: 1
Sat May  7 18:53:22 2022: W:INADYN: Error validating DYNDNS svr answer. Check usr,pass,hostname! (HTTP/1.0 404 Not Found
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Content-Length: 1561
Date: Sun, 08 May 2022 01:53:22 GMT

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 404 (Not Found)!!1</title>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5Sat May  7 19:04:34 2022: W:INADYN: Response Code: 1

Retiring Google G Suite

I think it was in 2007 that I moved my email from a private server running smtp to Google Suite. I was got in with the free version at the time and have been able to keep using it without paying anything.

Google recently announced that they would be discontinuing the free plan for G Suite, and I had to decide whether to pay for an upgraded version or migrate to something else. I only have two users configured in my account for G Suite. Each G Suite account included 15GB of storage.

Several years ago when I was close to the 15GB limit. I decided to migrate to using my gmail.com account as my primary login and add storage to it instead of adding storage to my wimsworld.com account. I used an open source program called GMailBackup http://www.gmail-backup.com/download to backup all of my email including the labels from my G Suite account and import it to my GMail.com account. I then configured my wimsworld.com account to forward all the mail directly to my gmail.com account. That mostly worked well, though for some reason the G Suite account spam filter ran before forwarding mail to GMail.com. That meant I needed to periodically login to the G Suite account to check and make sure nothing important got stuffed in its spam folder.

G Suite Dashboard

Google initially declared that the free G Suite would be expiring in May, and have since extended the deadline to June, but I needed to get it dealt with before it became too time sensitive.

After looking at several alternatives, I came across the recent exit from beta for Google Domains. One of the features that Google Domains offers is email forwarding for the domain, which allowed me to forward the wimsworld.com email address to my gmail.com address directly. Since my gmail.com address was already configured to be able to send mail as my wimsworld.com address via the google smtp servers, the switch was almost transparent, and now all the spam catching is done in a single account.

I’d been hosting my DNS records for wimsworld.com on GoDaddy.com along with having periodic renewals of the domain name through them. Every year I’d go through the hassle of looking for discount codes and making sure I wasn’t upsold on more services that GoDaddy sells. Moving my domain to Google I was able to find an introductory code to reduce the price slightly while extending my domain by another year. The process cost me a total of $12 plus tax.

Google Domains

I’d downloaded my DNS records from GoDaddy before starting anything, to make sure I didn’t lose any data. Then I went to https://domains.google.com/ and initiated the transfer of the domain to google. I had browser windows open to both sites at the same time so I could accelerate the domain transfer by confirming what I was doing on both sites. The transfer moved the DNS records to google’s DNS servers and modified the SOA records, while keeping a few of my custom DNS records, including the MX records I had to deliver email to the G Suite mail servers.

Google Domains Email

Domains let me set up email forwarding, even though it won’t be active because of the existing MX records which knew that it was configured for G Suite. There was this big orange button to disable Google Workspace and enable forwarding. I was worried that it would actually disable to G Suite, so made sure I was logged in to the G Suite console and everything was prepared for cancellation before I hit the button. When I finally hit the button, it only modified the DNS records so to use the google domains email forwarding system and didn’t touch my G Suite status.

After configuring everything in domains, and seeing that it all appeared to work correctly with my gmail.com login, I still waited one more day before I cancelled my G Suite subscription.

Ready to cancel subscription
Reason I’m cancelling subscription
It took me several tries to get the correct admin email to complete cancelling my subscription
I no longer have a G Suite Legacy subscription!

The google domains email forwarding allows you to configure forwarding of specific email addresses to different accounts, and allows a significant number of rules to be set up. It also allows using wildcard forwarding to forward mail. On my wimsworld.com address, I’m using wildcard forwarding for all of the possible accounts to my gmail account. I’ve got other personal domains set up that needed email forwarding to multiple people, and have been able to set specific addresses be forwarded to specific recipients, and a wildcard to forward any other mail to me. I like the wildcard as a catch all for mail that I may have forgotten I was using.

Google Domains has a few other features that are interesting that may get a separate write up if I have time. Dynamic DNS Hosts and DNSSec are available without extra costs. I’m already using two different free dynamic DNS services but may investigate this as I believe it would work directly with my domain name instead of using a CNAME forwarding scheme.

Perils of Open Tabs

I have had several tabs open in my browser for an extended period of time, across multiple reboots of my computer, and connecting to several different networks.

Today I was traveling and happened to be using the WiFi in the Amex Centurion Lounge. Two of the background tabs in my browser reported privacy errors, and when I tried to go to them anyway, they were redirected to an ATT hotspot error page. What’s really frustrating is that now, I don’t know what one of the original URLS was.

Initial message when page didn’t load
Web Page Blocked

Both pages were hosted on opensource.com and I’m pretty sure were related to GIT, possibly with a group of handy commands to remember.

WAMU Theater

I’ve thought it funny for a long time that the WaMu theater at Lumen Field still goes by that name. I believe it was originally set up as a paid for name by Washington Mutual and used their WaMu logo in the title.

Washington Mutual Logo

I regularly get email about upcoming musical performances held in the venue and it’s the first time that I recognized the WaMu has been changed while still staying in place.

Washington Music Theater Logo

I wonder if this is because of the length of time that was originally paid for, even though Washington Mutual went out of business in 2008, or if there’s some other reason it’s still called WAMU Theater.

Sola Instrument Changes

When I purchased my sailboat I knew that I was going to want to make changes to the instruments. It had a Garmin Chartplotter and a Garmin AIS receiver. The chartplotter was several years old and all of my recent experience has been with B&G chartplotters designed explicitly for sailing.

Before dealing with the chartplotter I spent a lot of time understanding the existing platform. What I found was that the chartplotter and ais reciever were connected via a NMEA 2000 backbone, but not connected to anything else.

The boat was configured with raymarine wind and speed instruments, as well as a raymarine autopilot but they were not connected together.

Raymarine Original Connections

There were two switches on my breaker panel, one for instruments in general, and a separate one for the autopilot.

Reading the manuals for the smartpilot controller I learned that if it was connected to the wind instruments I could sail to a wind angle as an alternative to sailing to a magnetic compass heading. Because I planned to do a lot of single handed sailing, this was definitely something I wanted to implement, and was the first change I made to the boat wiring.

Raymarine Smartpilot Connected to Instruments

The only drawback of this connection system is that when the autopilot is turned off and the instruments are left on, the smartpilot controller alarms and reports loss of communication with the controller. This mainly happens in the evening when I want to turn off the autopilot to save power but leave the instruments on to monitor depth and wind speeds.

SmartPilot S2 connects to the compass, rudder position sensor, and rudder drive unit

The next change I made was to add a Raymarine Seatalk-Seatalkng Converter A06064 to connect the legacy Seatalk network to the NMEA2k network. The Seatalk-Seatalkng converter allows the old seatalk instruments to communicate with seatalkng instruments. Seatalkng is essentially the same as NMEA 2000 (NMEA2K).

I replaced the Garmin GPSMAP 740 with a B&G Zeus3S

I replaced the Garmin AIS 300 Receiver with an em-trak B954 AIS Transceiver

I replaced a Sony Stereo and CD Changer with a Fusion Apollo MS-RA670 Stereo

My current set of interconnected instruments are as follows.

I’ve been thinking about changing my speed and depth instruments to newer models, with the possibility of using newer depth transducers that work with the B&G and look forward to provide a 3d view of the ground surface forward of the boat. The big question that I’ve not been able to come across an answer yet is if the Seatalk-Seatalkng converter communicates both directions, and if the apparent wind and water speed data were to be moved to the Seatalkng side of the converter, would the autopilot still be able to steer to the wind angle.

Clear Silcone

Sola Lights

Since this was my first year of boat ownership, I wanted to put lights up for the holiday season. I put them up in mid November and took them down in early January. I used three strings of lights, one at the forestay, and one on each of the backstays.

I have a full canvas cockpit cover, which meant that one of the light string connections could be out of the weather inside the cockpit, but the other connections would be outside.

I ran a single string up the forestay with the plug at the base, dropped into the anchor locker so it wasn’t sitting on the deck. I ran an extension cable from the cockpit over the deck to the anchor locker.

I joined two light strings together and used the main halyard to pull them up the backstays.

Clear RTV Silicone Sealant 66B

I had this tube of silicone sitting around so put a small bit on the flat part of each outside plug before connecting them. It seems to have worked well because it was still intact when I took the lights down, and the lights were still working properly.

After separating the cables, peeling the used silicone away was easy.

I’d done this treatment for the end plug on the forestay that was raised to the top of the mast, the join with the extension cable at the bottom of the forestay, and the joint of the two strings at the top of the backstays.

Govee H5182 Dual Probe Bluetooth Meat Thermometer

Govee H5182

Because I can’t seem to stop playing with the Govee line of Bluetooth thermometers, when this model came on sale for less than $20 I added it to my Amazon cart.

I knew that the Bluetooth protocol would be different purely based on multiple sensors, but I wanted to play with it anyway. With less than a month since I’d previously figured out a device, I was able to figure this one out in less than an hour, though I still don’t know the battery strength indicator in either this or the H5183 I decoded last month. I’ve added the code to my monitoring program https://github.com/wcbonner/GoveeBTTempLogger/  but have not yet published the changes. The existing code is designed around a single temperature, humidity, and battery reading per device. Even the H5183 broke the model slightly because it has two temperatures, current and alarm, and no humidity. I’m rethinking my data storage to be able to be more expandable, while still being backwards compatible as far as the log files, and will publish the new code when I’ve got it working.

This unit has the advantage of a display over the H5183. It can be used without connecting to a phone at all. You can turn it on, set the alarms, and monitor what’s going on. The one thing I did not figure out how to do using the buttons was to change the display from °F to °C, which I wanted to do to simplify debugging. Using the app I was able to update the settings and view the details.

Details from Amazon:

  • Remote Monitoring: With this wireless grill meat thermometer, you can spend less time waiting and more time multitasking within a 230ft Bluetooth range, Pull out your phone and check the meat temperatures of your grill, smoker, and oven at any time
  • Meat Temperature Settings: Govee Home App offers USDA-recommended food temperatures with various doneness levels for foods such as beef, lamb, chicken, pork, turkey, and more, Grill more efficiently, whether you’re a beginner or a professional
  • Smart Alerts: Avoid the risk of overcooking your food, Once your preset temperature is out of range, your meat thermometer will beep and send an instant notification to your phone via the Govee Home App
  • Food Grade Probes: Our food grade 304 stainless steel thermometer probes have an accuracy of ±1.8°F/1°C to reliably monitor the doneness of your food (under 302℉) ,*Please remember not to touch the probes immediately after use
  • Easy to Place: This Bluetooth meat thermometer has a strong magnetic backing and a folding stand to easily set up on the grill, smoker and oven when barbecuing, There is also a large backlight screen to make it easier to read at night

There is also a single probe version of this thermometer. I expect it works similar to this unit, but the price savings made it less interesting to me since I already have the H5183 in my kitchen.

Govee H5181

Govee H5074 and VPD data

I was playing with a couple of brand new H5074 devices and realized that the iOS app now includes two new charts, Dew Point, and VPD.


The new devices report as hardware version 2.00.01 firmware version 1.00.01. My older devices all report hardware version 1.00.01 and firmware version 1.01.00.

The pressure and dew point are available in both the new and old H5074 devices, but not with any of the other units I’ve got connected. (H5177 or H5075)

I’ve not been able to find details on the data. I don’t know if it’s packed into the BLE advertising data, or only available in the connected download data.

Govee H5183 Bluetooth Wireless Meat Thermometer


I recently came across the Govee Meat Thermometer on sale at amazon and decided to give it a try and see if the communication protocol was similar to any of the other Govee thermometers I’ve bought, the H5177, H5075 or H5074.

The Bluetooth communication protocol is different from any of the other devices I’ve got, but after a day of staring at raw data I was able to figure out some of the details and add support to my monitoring program https://github.com/wcbonner/GoveeBTTempLogger/ . The Bluetooth announcements from the device include both the current temperature and the set alarm temperature. I’ve not yet figured out the battery strength data. The phone app displays the battery, so I know it should be available.

There’s an orange button on one side to turn the unit on. Hold for three seconds. It will beep indicating it’s on. The LED will start flashing green, and the device will periodically send Bluetooth announcements including the temperature and alarm temperature. If you connect to the device with the phone app, the LED will switch to flashing blue, indicating that it’s in a connected state. While the device is in a connected state, it doesn’t not send out announcements. To return it to standard mode, simply exit back to the top level of the app. The app will still alarm when the probe gets to set temperature. Holding the button for three seconds when it’s on will turn it off, with beeps to confirm the change.

A nice feature of this device is that it has a magnet built in, enough to hold the device to the front of a metal oven.

Details from the Amazon listing:

  • Useful Smart Alerts: If temperatures fall out of your preset range, an alarm will sound, and you will get a phone alerts notification via the Govee Home app. The probe measuring range is 0° to 300°C /32° to 572°F. Note: press and hold the orange button for 3 seconds to power on.
  • Convenient Remote Monitoring: Tired of waiting near a hot grill, With a 230ft/70m smart Bluetooth wireless control range(no obstructions), you are free to relax and check your temperatures on your smartphone at a glance. Remember to remove the protective tip before use.
  • Performance Review: Detailed temperature data and easy-to-read charts are generated within 2 hours. (Charts can’t be stored/downloaded) Perfect for a quick review or an in-depth analysis of temperature performance. Improve your cooking and temperature with calibration at ±5°C.
  • Temperature Made Easy: 28 temperature recommendations for 14 types of foods take the hassle out of cooking. Ideal for both beginner cooks and pro chefs.
  • Practical Features: Temperature switching between Fahrenheit and Celcius. (The default unit is Fahrenheit) Mute alarm function and countdown timer on the Govee Home app. The magnetic back can easily be attached to the refrigerator, oven or grill, or any other metal surface. Note: Please keep the meat thermometer unit safe from heat sources and very hot surfaces to protect its internal batteries and exterior shell.
  • Part Number: B5183011