Wed, 5 Aug 2026

Diagnosing Weird Thingino Errors

— SjG @ 1:58 pm

Well, just a few months into using a Thingino-flashed WyzeCam3, I noticed that one of the units had stopped responding.

I could see it connecting to the network (or at least taking a DHCP lease from the router), but all connection attempts failed. The LED was lit, but I couldn’t tell what it was doing. I shut it down, and checked the SD Card — the last motion it had captured was from fifteen hours ago, although there was plenty of room left on the card. Something was weird.

I powered it back up, confirmed that it was connecting to the network, and checked to see if it was actually offering any network services. This was where things got weirder:

#nmap -Pn 192.168.x.x
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-05 08:49
Nmap scan report for MuhCam.lan (192.168.x.x)
Host is up (0.051s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT   STATE SERVICE
53/udp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 11.03 seconds

Say what!? Running sshd with UDP listening on the DNS port!? I’ve seen strange configurations in my time, but I haven’t seen that. Also, trying to ssh to that port didn’t work.

The fact that it connected to WiFi told me that it was mostly booting, but this made me think there was some corruption in the config files. It made no sense.

I was getting ready to open it up and see if there was a way I could hook up to a serial console or some other desperate measure, when I saw it flash the IR LEDs briefly, but not very brightly. This roused suspicion. Out of curiosity, I swapped the USB cable that it uses for power. Slightly different results now:

-Pn 192.168.x.x
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-05 09:14
Nmap scan report for MuhCam.lan (192.168.x.x)
Host is up (0.029s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT STATE SERVICE
123/udp open ssh

Nmap done: 1 IP address (1 host up) scanned in 10.19 seconds

OK, so now it says that sshd is listening on the NTP port? So whatever was corrupting the config files was not a one-time thing. Was it filesystem issues? Memory corruption? Failing hardware?

I thought Id’ try one more thing. I unplugged it, and plugged the original USB cable into a different A/C adapter.

What do you know? It came up cleanly, with the configuration intact! It was the power supply!

For the record, the normal nmap output looks more like:

#nmap -Pn 192.168.x.x            
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-05 09:27
Nmap scan report for MuhCam.lan (192.168.x.x)
Host is up (0.0053s latency).
Not shown: 994 closed tcp ports (conn-refused)
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
443/tcp  open  https
554/tcp  open  rtsp
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 1.72 seconds

Fri, 26 Jun 2026

Setting up a WyzeCam3 as a Stand-alone Unit with Thingino

— SjG @ 10:45 am

The WyzeCam3 is a relatively cheap device that can capture video. It can be set up for motion capture or continuous recording. But even if you install a memory card in the device, it will want to use the company’s app and stream data via their cloud storage. I don’t know much about how much thought went into their codebase with regard to security, but this is the kind of device where the usual answer is “not much.”

Furthermore, the WyzeCam requires an app for installation and configuration, and the WyzeCam3 needs to connect to your 2.4GHz WiFi network. Oops. I have no 2.4GHz WiFi network. It’s all 5Ghz here. Now what?

Enter Thingino, an open-source replacement firmware. One nice feature is that it allows the camera hardware to enable an Wi-Fi access point (“AP mode”) — it creates its own 2.4GHz WiFi network, which my Mac will happily connect to! Once the camera is set up, I can further customize things, and have it write motion capture files to the SD memory card rather than someone’s cloud.

You’re being watched…

So, there’re a few gotchas that were not obvious to me:

  1. When you’ve downloaded the firmware, you need to use something to flash it as an image on your micro-SD (e.g., Balena Etcher, Rufus, or the like). I came across at least one guide that said “simply copy the files onto the SD card” which is incorrect!
  2. When the Thingino installation has completed, you connect to the WiFi network it creates. A captive portal form pops up for basic configuration. You’re asked to provide a device name, a root password, and a WiFi SSID and password. There’s also a checkbox to have the camera create its own WiFi hot-spot (the aforementioned AP mode). If you’re going to have it work in AP mode, the SSID and password you provided above are used for the network it creates. If you are not, it will use those to connect to an existing network. Don’t make the mistake of giving the SSID and credentials for your existing network and then checking that checkbox!
  3. Once you’ve installed Thingino via the SD card and you’ve connected to the network admin, you might want to set up motion capture to “Storage.” You’re gonna have to reformat that SD card first! The UI won’t complain, or tell you why it’s not working, but it just won’t let you submit the form. Thingino recommends formatting in exFAT.
  4. Even if you’ve configured the “Motion” panel, you have to click on the Storage link and tell it that you really mean the storage mounted at /mnt/mmcblk0p1 (or the mountpoint for your SD card ). You can have motion sensing and capture enabled, but it will fail if you haven’t taken that step.
  5. You may need to go into storage manager to tell it how to clear off space before you can enable motion capture. The control panel for motion capture does not seem consistent.
  6. Even after all that, the motion capture details may not save correctly. At least the firmware version I downloaded, it just wouldn’t save the settings consistently. There is a workaround! You have to ssh in to the camera, and set the values:
    Enable motion detection
    jct /etc/prudynt.json set motion.enabled true
    jct /etc/prudynt.json set motion.send2storage true
    Configure the storage destination
    jct /etc/send2.json set storage.mount /mnt/mmcblk0p1
    jct /etc/send2.json set storage.send_video true
    Set motion sensitivity, range is 1-8, default is 1. Higher = more sensitive
    jct /etc/prudynt.json set motion.sensitivity 5
    Configure clip length (in seconds)
    jct /etc/prudynt.json set motion.video_length 15
    Restart prudynt
    /etc/init.d/S31prudynt restart
  7. If you want to restore the original WyzeCam firmware, the instructions say to copy the original config files that get backed up by the Thingino install into the root directory of the SD card, name the file autoupgrade-full.bin, and then power it up. Oh, did you have that SD card formatted in exFAT? Ha ha, the firmware replacement process requires the SD card to be formatted FAT32 with Master Boot Record (MBR). The failure mode for this is somewhat opaque — it does seem to do something, and then in my case it announced it was ready for setup… in Italian. It was not ready for setup, though, as it hadn’t replaced the firmware.

Other Problems:

  1. There’s no way to have the device do its own time management without a network (NTP). You can set the clock (ssh in, use the “date” command in BusyBox) but it doesn’t survive power-cycles.
  2. I set up an isolated 2.4GHz guest network for the cameras that only allows DNS and NTP traffic to/from the internet. Then I went to reconfigure the cameras to use that network. From the admin panel, when I changed the network settings and turned off the “create AP,” it never seemed to connect. I had to reflash to the original firmware and then reinstall Thingino.

Other notes:

  1. If you set up the Thingino camera with an AP network, it defaults to the IP address 100.64.1.1

Wed, 6 May 2026

Boring birds

— SjG @ 8:54 am

Many years ago, as a young stripling, I was on a Sierra Club hike when an older gentleman told me he figured I’d probably become a birder. Now, I’ve always had a fascination with and affinity for some kinds of birds — ravens and crows, hawks and owls — but never thought of myself as particularly interested in birds. So I’d expressed doubt to the gentleman, who explained to me that “all the better people who have an interest in nature become birders eventually, if they live long enough.” While flattered to be considered “better people,” I was still skeptical.

Well, I’m a lot older now than I was. Several college friends have extensive camera rigs for birding and take astonishing pictures, and I find that I too am interested in bird photography. On the Fediverse, I follow many avid birders, and I am catching the contagious enthusiasm of seeing a new species or the first view of the year of a migrating species. I still don’t consider myself a birder, but after watching this video with Christian Cooper, I may reconsider.

I’ve shared hummingbird pictures here before. They’re fascinating and colorful and have a lot of character. But one thing I’ve “discovered” of late is just how interesting the typical boring garden-variety “little brown birds” can be! We have a bird feeder, and will sometimes toss little bits of peanut to a song sparrow while sitting out on the front porch. We dubbed the swallow “Squeaker,” and it’s a comical little bird, who will beg and scold us when we go out front.

Squeaker

Then, to our surprise, one day we realized that Squeaker was not a single bird, but at least a pair, and possibly their kid too. It was just that before the realization, we’d only seen one of them visit at a time. The begging and scolding behavior seems to run in the family. We’ve seen one of them gather up bits of peanut to feed to another — whether it’s their mate, friend, or offspring, we don’t know.

Squeaker … or Squeakette?

Song-sparrows are super common in Los Angeles. They’re everywhere. But take a look at them! Look at those feather patterns, and the little eyelash feathers. They are amazing critters.

Which one are you?

These little loud birds have a lot of personality, but they’re not the only ones. Up at my mom’s house, there’s a dark-eyed junko that’s nesting in one the flower pots. If Squeaker et al are comical in their demanding behavior, these junkos are hilarious little hoppers that bounce their way around the patio like little cartoon characters.

Boooooiiiiing!

This year, I’ve really started noticing the warblers. We’ve had a family of orange-crowned warblers hanging out in the garden. They’re voracious hunters, and I can often hear their trill as they pop around in the bushes hunting caterpillars and spiders.

Hunting

Check out that intense look. If I were smaller, I certainly wouldn’t want to have that look directed at me.

Over in the nasturtiums, there was a looper. I didn’t see it, but this little warbler sure did.

Caught one.

In this last shot, I saw the younger bird sitting fairly still and trilling, mostly hidden by branches. It was largely ignoring me. The branches blocked me getting a good photo, but then suddenly it turned around and came out into the open. I started snapping away, and missed the focus by a bit, but did manage to get a view of the parent coming with a big beak-full of crunchy insects.

More!

There’s a lot of drama in the garden. And it turns out even “boring” little brown birds have a lot more going on than I thought — all I had to do was take a look.

Mon, 13 Apr 2026

Fight the Power(lines)!

— SjG @ 10:45 am

It’s pretty widely understood that photography doesn’t do a very good job of representing objective reality. Choices of cropping, exposure, color balance, saturation, etc, all can be used to project a specific narrative. That being said, I (for the most part) try to do minimal processing beyond those adjustments on most pictures I share.

However, I do digitally alter some photographs for aesthetic purposes. I try to be up front about it when I do (for example, see this picture).

This picture, taken at Descanso Gardens on April 11, 2026, and without any post-processing at all tells a bunch of lies.

Rose Garden

What lies does it tell? It hides the crowds, for one thing. The field is flattened, making the roses appear to be almost a hedge. Here’s a more honest view of the scene:

Crowded day at Decsanso’s Rose Garden

So, by standing over where the guy in the pale blue shirt is taking a picture, and holding my camera low to the ground, I could capture that image above. Then, because I let the camera determine the exposure, the original image underexposed the foreground in order to preserve the cloud details. The color balance was for cloudy skies, and I wanted it to look sunnier. So I punched up the shadow exposure, tweaked the color temperature a tiny bit, and increased the vibrancy by a about 10% percent. Because the overall exposure was increased, I had to adjust highlight settings to pull the cloud detail back in.

Since I was already in fantasy land, I decided to improve it even further by getting rid of those unsightly power lines. Here’s the final result:

Rose Garden
Filed in:Art, General, Photography

Mon, 16 Mar 2026

Flower Season

— SjG @ 7:14 pm

In southern California, with judicious planting, it can be flower season year ’round. But even so, Spring is special.