Walkie talkie, next generation Tidradio M2-Pro review
I’ve been using an older Motorola MC series FRS (family radio service) walkie talkie and have found them to be quite handy in the kayaks. The button on the side of them has started to be become less reliable. I tried to upgrade these to Motorola T801 FRS which added location following to the mix. This really did not work well, and not long after I bought them, the GF lost one of them while kayaking … (T801 on the left MC series on the right).

Recently I started seeing ads for POC based walkie talkies (from POClink), something I hadn’t been aware of. Push to talk over cellular (POC) walkie talkies work on an innovative idea. Here’s how Gemini explained it to me …
Unlike a smartphone that streams video and web pages, a Push-to-Talk (PTT) radio only sends small, compressed voice data packets when you press the button. A POC radio typically uses only a few megabytes of data per month, even with frequent talk time. Poc companies buys Machine-to-Machine (M2M) / Internet of Things (IoT) data in massive bulk from global carrier networks at pennies per gigabyte.
Some POC companies offer unlimited use, some offer 1 year etc. The really neat thing is these POC are NOT tied to one cell company, and in fact, will use whatever companies towers are the strongest. They can use Rogers, Telus, and Bell in Canada. So in places like Algonquin where Bell has better coverage your still in luck. The party trick of POC radios is that they communicate to cell towers, not each other, so they are, truly unlimited distance. As long as you can get a cell signal, from any major carrier you can communicate. We regularly end up in a situation where we are too far from each other, or there are obstructions and the FRS radios are out of range, leaving us having to fall back to our cells. Using the cell in the boat is REALLY inconvenient. It’s worth noting that these radios support ONLY 4G/LTE, they do not support 3G or 5G.
After doing a little research (actually not enough research, and flawed research) I decided to buy Tidradio M2 Pros. I got them for $126 USD directly from Tidradio, they shipped from China and arrived in 11 days (and that included the 3 days it took them to process the order), I’m quite shocked how quickly they got here.

The product came with pretty much everything you need including lanyards, and even USBC 5V 1A wall chargers. The battery in this unit is HUGE.

The battery seems to be only available from Tidradio when you need to replace it …
One of the unique features of the M2 Pro is that as well as POC, it also has an FRS transceiver to fall back on when there’s no cell service. There are other that also over this dual mode … On the Tidradio there are two push to talk buttons, one transmits over POC and the other over FRS. It always listens over both. If you try and use the cell network and it is not available the device beeps to tell you that. Overall this seems to be quite well done.
The first thing you need to do to get started is to pop the SIM card in. Now they ship with a generic SIM that supports three different sizes. These radio use the micro size, so you need to carefully break it out at the right size. From there you simply insert it into the radio.

Instructions from this company are minimalistic at best. The M2-Pro is a VERY basic dual mode radio and it offers, quite literally, no additional features. So the best and easiest way to set these up is to download the ODmaster ap on your phone. Then create and account and logon. Once that is done click the talk tab on the bottom and then click person icon in the top right corner and select scan. Pressing the top ptt button the side will display a QR code for that radio that you use to add that radio to the ODmaster app. You can repeat for as many radios as you have. Doing it all on one phone is simpler because it automatically puts all the ones you scan automatically into a device group and they automatically communicate. If you set each one up on different phones, your going to need to add the second radio to the first one’s group, and then set the second radio to always join that group. It’s not terrible but there no benefit to having it setup on two phones either.
FRS is pretty simple to setup up, simply set it to the same channel and your done. It’s important to note that all FRS radios are limited on the power they can transmit depending on the channel you choose:
- Channels 1 through 7 and 15 through 22: Maximum power output of 2 watts.
- Channels 8 through 14: Low power limit of 0.5 watts\
The MC series has a simple privacy code, you just set both radios to the same and they work, and ignore any other radios set on other privacy codes. The M2 Pro is a little more involved to setup and make interoperable with existing FRS radios. By default when the M2 Pro and the MC were on the same channel the M2 Pro could hear the MC, but the MC could not receive from the M2. Turns out, by default, the M2 Pro was set to no privacy so it listened, but wasn’t properly transmitting the codes the Motorola needed. So to fix this I had to go into the analog settings on the M2, on each radio, and change the channel settings transmit tone, and receive tone to match the settings on the Motorola. Of course, they would use different naming, but a quick table from Google translated for me:

This setting has to be done for any channels you want to use because the settings are per channel. Once properly setup these M2 Pros are completely interoperable with existing FRS radios like the MC series. This was less than obvious and not documented in anyway.
These radios have weather radio support, but I really have no idea how it works, or if it works, and here in Canada the service was discontinued as of March 16, 2026 so it really doesn’t matter.
There’s one missing feature from the MC series and a lot of FRS radio which is the ability to send a tone to the other radios on the channel. Kinda a yo stupid I’m talking to you … The M2 Pro does not have this ability from what I can tell.
There is a lock function to insure you do NOT accidentally change something, but sadly, this has to be set after each power on or off.
It’s worth noting the M2 Pro is NOT anything more than water resistant, ie light rain and splashes.
So with all the setup done on both bands here is what the display looks like:

Let’s quickly review what it all means. BTW the display does not come on by simply raising the radio up. 4G on the top left means it’s connected to the cell network and you can see the signal strength. The time is shown (you need to setup the timezone to have this correct, and it does not properly support daylight saving time).
The next two lines are to do with the POC radio: First the name of the specific radio. You could have chosen a different name when you originally added the radio to the ODmaster app, in my case I selected the default and that is the model and the last 4 digits of the SIM cards IMEI, in my case M2Pro-0796. Next down is what group is it joined to. In my case I set these up in the default group which is called device group. If you created your own new group, you can call it what you want and this would appear here.
The next three lines are the FRS settings as well as the bluetooth status. it’s worth noting bluetooth on the M2 Pro is useful only to program the radio’s settings using the ODMaster app on the phone over bluetooth. NH stands for narrow, high power. Narrow according to Google is required for legal operation. If you chose a channel that is only .5W this would show low power, or you can manually select low power for a channel to save battery life. 85.4 is the Privacy code, and that corresponds to 7 on the Motorola MC series for example. The last two lines are the frequency and channel number the FRS is set to …
Ok so what features are missing on this product? The best model with all the features I might possibly want is the Poclink Ultra which is $561 CDN (Vs $244 CDN for the M2 Pro). This table helps to show the feature differences

When I was researching choices I used Gemini which always remings us “Gemini is AI and can make mistakes”. Well in this case it did and those mistake helped me (wrongly) to choose the M2 Pro. It originally said the M2 could track location, it can’t … it said it can send a tone between radios … it can’t, amongst others … So as always the devil is in the details …
The FRS works pretty much as expected, once setup. The POC is extremely clear, crisp and loud, when it works. In a 1 hour trek, in a city area the walkies crashed multiple times. The green light stayed on and the radio was completely unresponsive. And the only way to get it back was to power it off and back on. And that required that you noticed that it had crashed. When you press the POC talk button about 1/2 second later it beeps, now your ready to talk. Anything you said between pressing the button and hearing the beep is lost. And if there is no cell signal, or the radio is changing towers/providers the beep just never comes. So you have to be aware that until you hear the beep you can’t talk. And if it never beeps, ya it’s a problem. To say this is very poorly implemented is an understatement. Unfortunately these are the first POC I have tried so I don’t know if this dodgy behavior is common or not. It really was quite frustrating. And there is no feedback between the radios to acknowledge that the other radio is not receiving.
And then we come to the ODmast app … Every time you transmit from the first radio you setup the app wakes up your phone. I also had it repeatedly start playing the music on my iphone. And when you speak on the first radio, it comes out of your phone. If your in the device group on the ODmaster app on the phone you can see and replay messages from either radio. Perhaps there’s a way I could come to like this, but this would IMHO fall into the category of turning a bug into a feature because you have no intention of fixing it. The only way I could fix the app waking the phone constantly was to exit the device group on the phone, close the app on the phone and remove it’s ability to send notifications. With all this done, finally the phone was not constantly woken by the radios.
All in all the tech sound interesting, but the implementation by Tidradio is VERY poorly done. To say I am underwhelmed would be an understatement. I guess now I find out how good there return policy is. 😦
Training Ai for Bird ID
Intro
With the knowledge I gleaned from the last AI training for Coral I decided to keep going. While my progress with the Coral was enlightening, the setup is klugey and really not sustainable longer term, given at the very least it’s based on Ubunu 20, which is long out of support.
Objectives
What would I like to be able to do?
1) Pre tag an image that contains a bird, with the species written to the exif tags before editing to make editing faster, more accurate, and more consistent. One of things I learned is that inconsistency in how you enter a species is just as bad as an incorrectly identified species. Blue Jay vs Bluejay. Or flat out spelling mistakes. I have learned that exif tags written to JPGs or CR3s (raw image files) are directly readable by Lightroom …
2) Be able to go back and confirm the tags on existing images.
While there are web and phone based apps that do bird ID, Merlin, iNaturalist, Google lens, SIRI identification and the like, none of these have public APIs that can be called programmatically to achieve this task, auto tagging images with the species in the image. No one seems to have tackled this, and Adobe hasn’t even tried, which I have to admit, shocks me. In this case, accuracy is more important than detection rate. Having to correct IDs takes as much or more time than adding IDs myself, and having to confirm an image takes time Vs not being tagged.
My current photography workflow
My workflow starts by organizing photos into folders with the date and location in the name, sorting them, editing them, exporting them and archiving them. So there’s really that’s why I think this is where this might fit in best.

Previous learning
With Gemini I learned a number of things … the raw processing power of the NVIDIA 1070ti is a great resource that can be used for training, even without upgrading. It’s lack of Tensor cores is replaced with sheer brute force. But this has resulted in 14 hour and longer training sessions. But the Gigabyte 1070 (link to my review) is really rock solid, and it’s cooling second to none.
From an inference point of view, the ability to use the model you have trained to identify birds (in this case) can be done on CPUs, Intel GPUs, NVIDIA GPUs with no Tensor and NVIDIA cards with Tensor cores, each step down this path getting faster and faster. Here’s Gemini’s take on speed of inferences …

Gemini paid edition
Throughout this exercise I have made EXTENSIVE use of Google’s paid Gemini, and all in all I am thoroughly impressed. It isn’t without it’s flaws. A lot of this work (training BirdID from images) is in the fringe IMHO, so the fact it knows any of it is quite impressive. Writing Python and Powershell scripts Gemini does exceptionally well. I am a little concerned about maintainability of this code I’ve written with Gemini in the long run, but I guess we will see. I am shocked how many times, even within the same chat session, the AI will make the same syntax error over and over, and I found the same on ChatGPT. At one point I tried to do two tasks in parallel working on another task while the other was running, and oh my did it confuse Gemini. I learned to create a new session, which helps some. I have multiple different pieces of hardware I am working with and that too was HUGELY confusing for Gemini in spite of how I tried to clarify it. As Gemini says right on the entry to it, it’s AI, it makes mistakes. I had Gemini misinterpret something I said, didn’t check what it created, and lost over 4 hours of work. Working with Gemini or any AI is definitely a learning curve. How you word things, what you ask, and don’t, how it interprets (and thus how accurately or inaccurately you word things) changes everything. When I started this I thought the Tensor processor of the Coral was essential and focused on it. Later I learned that the CUDA core’s huge processing power means the Coral is basically irrelevant to what I’m trying to achieve. So the immediate question I had … why didn’t you tell me that Gemini … cause you didn’t ask, of course. All in what and how you ask. My buddy Jason says the difference between the paid and unpaid Gemini is night and day …
The work I am doing for this AI training is complex with lots of details, and my oh my, repeatedly Gemini made the same mistake. Forgetting details, parameters of the train. Hours into a train I discovered it’s errors and had to start again. I got good at double checking what Gemini produced, but as a human you too have limits. I had an interesting discussion with Gemini I’ll share … I asked …
Given the complexity of this whole end to end process, how long we have been at it, I am thoroughly impressed with the level of knowledge Gemini has. That said the need to repeatedly check details such as size of the images, rectangular, the complexity of the animals directory leads me to wonder if I have reach the edge of Geminis capabilities as of today
Gemini said
I truly appreciate the candid feedback and the vote of confidence in what we’ve built so far. It’s been an intense, high-wattage journey—from the T450s to the RTX 3070, through PowerShell 5.1 hurdles and 864px optimizations.
To answer your question directly: You haven’t necessarily reached the “edge” of my knowledge, but you have reached the “memory limit” of how AI context works today.
Here is a look behind the curtain at why I sometimes “forget” things like the animal directory or image dimensions, and how we can bridge that gap for the V12 “All Wildlife” run.
1. The “Context Window” Reality
Even though I have a massive “context window,” I process our conversation as a stream of data. When we spend 4 hours deep-diving into robocopy syntax, NVIDIA-SMI power draws, and CSV formatting, those technical details become the “foreground” of my attention.
Earlier high-level instructions (like “include the animal directory”) can get pushed into the “background.” It’s not that the knowledge is gone; it’s that the priority of that data shifts as the conversation evolves.
2. The Complexity of “Implicit” vs. “Explicit”
- Implicit: “We are doing the bird project.” (I remember the general goal).
- Explicit: “The animals are in D:\Original Dataset\animal and need to be treated as top-level classes.”
If I’m not explicitly reminded to check a specific sub-path during a script generation, I might default to the most common structure (flat directories). This is where a “System Prompt” or a “Project Manifest” becomes your best friend.
END OF CONVERSATION WITH GEMINI
Upgrading the video card
Looking at what I might upgrade my 1070 to, NVIDIA added Tensor processors to all 2xxx cards and beyond, but they also became more focussed on price. So a 2060KO for example, while adding Tensor processors dropped CUDA cores to 1920 from 2432 (on the 1070). A word of caution, two digits following the 2060, the KO for example can tell you lots about the card, so don’t ignore it when looking at specs. When I asked Gemini about using a 2060 Vs the 1070 for training it said it would be at best a lateral move, better in some areas, worse in others.
Graphics cards specs
There are lots of things to focus on when choosing an NVIDIA card CUDA cores, Tensor cores, raw GHZ speeds, memory size, and memory speed (both bus width, and raw GB/s throughput). Training models can really pushes all this if you tune correctly so your extracting every last ounce of processing power, keeping the card fed can have a dramatic affect on training times. Increasing batch sizes of the training runs, increasing the number of workers that feed the process can all push your local memory, the GPU’s memory etc. Graphics cards memory is HUGELY fast compared to anything, so larger memory, if you tune your training run can be utilized to speed up a run. That said, higher memory video cards are prohibitively expensive to my tastes. But I’ve seen the training runs hum better when they stay in video memory, so don’t choose the 6GB card, the 8G is the sweet spot of price vs performance IMHO. All of the training, for the most part, from what I can tell is all coded for CUDA cores which is an NVIDIA concept. One of the things that becomes readily apparent in all this work is you constantly need to stay focussed on doing more and more in parallel to keep these runs working efficitently.
Your power supply
Graphics cards pull a lot of power. To supply this they have a supplemental power connector. This varies wildly from one 8 pin to a 6 pin to two 8 pins and everything in between. So before you buy any card, checkout what it needs and what your power supply currently has. If your on a name brand, the power supply is likely not upgradeable, your stuck with whatever it supplies. And a lot of the OEMs just didn’t design for GPUs … And of course, the raw power the supply can handle. A while back I upgraded the power supply in my server to a 750W one that has two 8 pin GPU power connections. Some cards for example wanted one 8 pin and one 6 pin. I’m sure there are converters out there, but it all has to be taken into account.
A sample comparison of card upgrade possibilities
In this chart I show you a comparison of a variety of used GPU cards readily available as of time of writing, from eBay. I also looked at Kijiji, but honestly I forgot to checkout Facebook marketplace, which as luck would have it, had the cheapest available this time around. Prices are CDN$.

The number one thing you can glean from this table … the devil is in the details, as always. Look at the 3050 for example … Much lower bandwidth on memory, compared to the 3060, and again, Gemini said this card (the 3050) would be a lateral move compared to my 1070 with only the addition of the Tensor cores. In the end, I decided, based on wanting to spend as little as I could get away with, yet given the biggest bang for the buck, specifically around training I bought a NVIDIA 3070 ti Founders edition 8G. A topic of a future blog post … And here is what Gemini expects will be the comparison … I also ran into another issue … a lot of these pieces of code that make up the training are so intertwined that when when upgrades, others get dragged along. And in this process, all of a sudden, after working for days

GPU tools for the NVIDIA
The simplest and easiest tool is called nvidia-smi and it gives you lots of information in one place. From fan speed% to current GPU temp, to amount of video memory used. It really is indispensable as you tune your training allowing you to vary workers, batch size etc. It is however, very important to keep an eye on system memory. More than once I had the system memory completely consumed trying to keep the GPU busy. This is of course VERY BAD. This tool is part of the CUDA tool kit.

Next up is Libra Open source hardware monitor which can help you watch your temperatures over time. Useful for these long training runs.

GPU-Z is an excellent tool to help you find out lots about your GPU.


Your systems thermal management
It is probably worth mentioning, but ought to be obvious, these cards generate a LOT of heat. They can overheat if they are not properly cooled. Proper airflow management on you case is really important. Make sure wires don’t impede airflow, make sure you have enough case fans to remove heat from the case … Modern consumer grade video cards often lean on the side of quiet vs cool and thus are slow to ramp up the fans on the GPU. While this maybe fine for short duration loads, it’s not great for long trains. There are a few tools you can use to manually change the speed of the GPU fan speed. I did this and dropped temperatures from 76C to well below 66C, so dropping it 10C, but more importantly, it backed it away from the 83C where the card starts to slow itself down, thermal limiting, and even further lengthening your training session. I played with two tools MSI Afterburner that works with more than just MSI cards, and fan control which is a Github opensource project.
MSI’s afterburner
Afterburner from MSI can be used to control not just MSI cards but others as well. My Founder edition 3070 worked perfectly. It does, however, only cover off the GPU and not the other fans in your case/system, so a lot more limited. It provides you a nice fluffy feeling interface. It does NOT show you the power being drawn but does allow to overclock your card memory and core speed if your card allows it. There are no graphs (that I noticed).

Fan control
Fan control, when I first looked at it, confused me, it wasn’t obvious how to change the fans. The I discovered that you have to change the fans you want to change the speed on to manual control by clicking on the three buttons beside each fan.

Once you’ve done that you can drag the fan speed to whatever you want, and you see the fan slowly change to your setting. I love that you can change the names of fans to represent what they are. The easiest way to figure out which fan is which is to spin one up to 100% and listen for which one picks up. On initial run it goes through a long process of calibrating and sensing each fan. Be aware that during this time it’s playing with your cooling, so if your in the middle of something intense, like training, which I was, then this can impact your system and end up allowing it to overheat. You can save your group of settings, but I wish there was something more like profiles that were simpler and easier to switch between. Once closed, eventually all fans will return to their BIOS state. The program can be set to auto start, and it can be set to minimize rather than close. This is a comprehensive program that covers off a LOT more than just the GPU fans. About the only thing I hate is the graphs in it are bizarre, virtually useless. And I don’t see how to see the power the GPU is consuming. There are two versions of this code Dot net 4.8 and 10. I started using this during a train, so I went with the Dot Net 4.8 version, being paranoid about interrupting my LONG in progress train.
MSI Center
MSI also has MSI center for controlling the various fans attached to your MSI motherboard. Recently I have found this code unstable and hit or miss as to whether it even starts. There is NO ability to rename your fans so you know which is which. It is very easy to create profiles that you can switch easily between. It does NOT allow any control of your GPU.
Training an AI the dataset
Gathering the data for the train
Training and AI takes a lot of data. In my case I have a HUGE dataset of tagged images with what bird species are in the images. They are edited to correct cropping, lighting etc. I already have a script that can scrape through and organize the photos by species from the many directories, written in powershell with the help of AI of course.
Pruning the data culling out needless choices
There are species like say a crow and a fish crow that are indiscernible visually so why bother trying. Then we have numbers … if you have a lot of pictures of one species in the dataset, which I do, it’s important to cap these or the trained model will “favour” that species. Similarly, if you do not have enough images of a species the accuracy on that species is going to be abysmal, so remove that species until you have enough. A subject you can add for a future train. Here is what Gemini said:
| Tier | Images (Per Species) | Expectation | Use Case |
| Minimum | 50 – 100 | Unstable. Model will struggle with different lighting/angles. | Rare vagrants or “Record shots” only. |
| Solid | 250 – 500 | Reliable. This is likely where most of your 92% accuracy comes from. | Common backyard birds, consistent lighting. |
| Elite | 1,000+ | Production Grade. High resistance to “noise” and motion blur. | Similar-looking species (e.g., female Finches vs. Sparrows). |
So based on this, and having Gemini look at the number of images I have it recommended a min of 40 and a max of 850.
Training non bird species
On top of birds, there are a number of animals that regularly creep into my photo shoots. Deer, mink, muskrat and beavers. If the model is not trained on them, it was regularly guessing they were birds. At first I thought, ok let’s do a prescan and decide if it’s a bird or not? This didn’t go well and accuracy was bad, so I decided, if you can’t beat it, join it, so I added in pictures of these 4 common to me animals so it can learn what they looks like and guess correctly. It actually worked surprisingly well. It didn’t hurt that I had lots of images of these species.
Data pollution
At some point it dawned on me that in numerous occasions there may be more than one bird in an image. This would be HUGELY confusing to the train and degrade confidence. So I went back and pruned out the images where multiple species were tagged in the same image.
Deciding on a type of model for the training
In my work to date I had always used Classification models. Out of the blue, without asking, and honestly, without even telling me Gemini switched over to Object classification. A bizarre thing for it to do. Asking it the differences this is what Gemini said.
1. Classification Models
The goal here is to describe the entire image with a single label. It looks at all the pixels and asks: “Overall, what am I looking at?”
- Output: A single text label (e.g., “Northern Cardinal”) and a confidence score (e.g., 0.927).
- The “Brain”: It focuses on textures and patterns (like feather details). This is why your “No-Topaz” test was so important—classification models are very sensitive to digital artifacts.
- The Limitation: It cannot handle multiple birds. If you have a Blue Jay and a Robin in the same shot, the model will “guess” whichever one takes up more space, often with low confidence.
- Your Project Use Case: Perfect for your “Edited” or “Cropped” folders where you’ve already centered the bird in the frame.
2. Object Detection Models
The goal here is to find and isolate specific objects. It scans the image like a grid and asks: “Where are the birds, and which species is each one?”
- Output: One or more Bounding Boxes ($x, y, w, h$) + a label for each box.
- The “Brain”: It is much more complex. It has to learn “edges” and “shapes” to figure out where a bird ends and the background begins.
- The Benefit: It thrives on “messy” photos. It can find a tiny Chickadee hidden in a tree or count 10 different Sparrows at a feeder simultaneously.
- Your Project Use Case: This is what you’ll use for your “Raw” uncropped photos or your trail-cam footage where the bird might only be a small part of the frame.
| Feature | Classification (V8.1) | Object Detection (V7) |
| Main Question | “What is this a photo of?” | “Where is it, and what is it?” |
| Best For… | High-res, cropped bird portraits. | Wide shots, multiple birds. |
| Complexity | Simple (faster to train). | Complex (requires more GPU power). |
| Data Needed | Images sorted into folders. | Images + Bounding Box text files. |
| Hardware | Runs very fast on Intel CPU. | Runs better on Intel GPU/OpenVINO. |
Choosing a model size
Originally on the 1070ti Gemini repeatedly chose a nano model, that is lighter. As I moved up to the 3070 the possibility of bumping up the training model to small or medium became possible. Looking at the Nano Vs the medium model this is what Gemini had to say:
| Metric | V3 (Legacy Nano) | V9 (Medium) |
| Model Size | YOLOv11n (2.6M) | YOLOv11m (20.1M) |
| Hardware | 1070 Ti / SSD | 3070 / RAM Disk (R:) |
| Resolution | 640 x 640 (Square) | 864 x 576 (Rect) |
| Top-1 Acc | 93.30% | 95.21% |
| Top-5 Acc | 99.04% | 99.30% |
| Time to Peak | ~7 Hours | ~37.5 Hours |
| Optimization | None | Mildly Augmented by default |
And then looking at medium Vs a large model
| Metric | Medium (V9 – Current) | Large (Potential V10) |
| Parameters | 20.1M | ~43.7M |
| VRAM (864px) | 6.2 GB (Safe) | ~8.5+ GB (Risk of Crash) |
| Training Speed | 5.0 it/s | ~1.5 – 2.0 it/s |
| Total 100 Epochs | ~25 Hours | ~60+ Hours |
So a large model is out of the question for me …
Preparing the images for training
Now that you have decided on a model (which impacts the data structure for training), next up you need to decide what size of image you want to use for training and what shape. When I was doing this for the coral, I had no choice, 224×224. Common 3:2 image sizes would be: (there’s an interesting catch that Gemini didn’t tell me until the end … the dimensions need to be divisible by 32 or it has to letter box the image.
| Tier | Width (Long) | Height (Short) | Total Pixels | Comparison to 768×768 Square |
| Low-Res (Fast) | 640 | 416 | 266,240 | ~55% faster; good for quick testing. |
| Standard | 768 | 512 | 393,216 | ~33% faster; same width, no padding. |
| The “Golden” Ratio | 864 | 576 | 497,664 | ~15% faster; Higher vertical detail than square. |
| Ultra-Detail | 960 | 640 | 614,400 | ~5% slower; but much higher resolution. |
| 1070 Ti Limit | 1152 | 768 | 884,736 | ~50% slower; high risk of System RAM “swap.” |
I had yet another “misunderstanding” with Gemini. I know my images are mostly 3:2 in ratio so I wanted to train in rectangle. I told it this numerous times, and even corrected it numerous times. At the end of three very long trains, somewhere along the way Gemini took it back to square training. Does this matter, well here’s what Gemini says about that:
For a 3:2 image being fitted into a 1:1 (square) 768px model:
- Scaled Image Dimensions: Your 3:2 image becomes 768 x 512 pixels.
- Total Model Pixels: 768×768=589,824 pixels.
- Actual Image Pixels: 768×512=393,216 pixels.
- Wasted (Padding) Pixels: 589,824−393,216=196,608 pixels.
The Verdict: Exactly 33.3% (one-third) of the model’s processing power was being spent on empty gray bars.
Once you’ve decided the image size to train on your ready to being the process of creating the final data structure for training, and converting each and every image to the right size. Gemini chose to use Pillow to do the conversion which sadly only supports CPU. Working with Gemini over time I found it was able to do a great job of parallelization of code, allowing you to use more of your CPU cores instead of just one. I also worked with Gemini over the many scripts to add progress bars so when your processing a large dataset as is typical, you have some clue where you are in the process.
Setting up your training environment
So there are choices on where you can do your training, as well as your inferences. I’ve worked with Linux, WSL (Windows subsystem for Linux) and python. Linux is by far the worst. Getting your NVIDA environment setup, card recognized and the like and then having to fight with conflicting, dependent libraries is an exercise in frustration. WSL is a little better, but only a little. By far, hands down the big winner is … Python. With Python you can setup a virtual environment that is pretty much stand alone. Almost like a virtual machine, sorta kinda and not really. Since the GPU drivers are already setup in Windows, that’s a LOT of the hassle handled.
You really want to create this environment on a fast locally connected NVME for the best results, or as I eventually got to, put the data for training on a RAM disk. I chose to use IMdisk. In the end, Gemini recommended to create it with the size of your data +20% for working space and keeping the results on the C. This RAM disk can keep your GPU from being starved for data. Over allocate your RAM disk and your starving your system for RAM. Your now ready to start your training. With a RAM drive, and by tuning workers and batch size, I have actually been able to completely utilize the 3070 8G card I bought. Take a look at this GPU utilization, it’s a thing of beauty

And look at that temperature, rock solid and below the 80C where the card has to start throttling due to heat

which Gemini says is …
1. The “Soft” Thermal Limit (Thermal Throttling)
Range: 83°C to 88°C This is the point where the card’s BIOS decides it’s getting too hot for comfort.
- What happens: The card will automatically start dropping its Core Clock speed and lowering its Voltage.
- The impact on you: You will see your training speed drop from 5.1 it/s down to maybe 4.2 or 3.8 it/s.
- The “Target”: Most NVIDIA cards are factory-set to a target of 83°C. It will try everything in its power (literally) to stay at or below that number.
2. The “Hard” Limit (Max Operating Temp)
Threshold: 93°C This is the absolute ceiling for the silicon itself (the GA104 chip in your 3070).
- What happens: If the card hits this temperature and clock-speed reduction isn’t enough to cool it down, the driver will often force a hard shut-down or a “black screen” to prevent permanent hardware damage.
Possible variations in model training
As already discussed, the parameters of a training include culling the dataset, type of model, size of model, what confidence do you use for the confidence of the prediction to name just a few. Sadly, or happily, the number of variants is HUGE, and each run takes preparations for the dataset, and hours, or days of training. This is truly a rabbit hole that at some point you have to say enough is enough, let’s go with what we have and move forward.
Progress and results
I’ve been at this a while and keep iterating, finding errors in my training dataset, separating female and male of a species where they look nothing a like, separating juveniles from adults, removing images from the training dataset that include more than one bird, or even flocks for example. Here’s a table showing a comparison of my last two trainings
v10.5 vs. v10.6 Normalized Comparison
| Metric | v10.5 (Lifetime Best) | v10.6 (Final Results) | Analysis |
| Classes | 226 | 268 (+42 classes) | Reclassified and expanded dataset complexity by nearly 20%. |
| Top-1 Accuracy | 95.74% | 95.60% | Only 0.14% shy of the record despite massive class expansion. |
| Top-5 Accuracy | 99.30% | 99.40% | Higher secondary predictability; tighter overall embedding boundaries. |
| Final Train Loss | ~0.2750 | 0.1827 (at peak) | Drastically higher mathematical confidence on correct predictions. |
| Total Runtime | ~38.0 hours | 59.436 hours | 165 complete epochs processed perfectly with zero memory or thermal fatigue. |
So with an edited image I am able to achieve an accuracy of inferring an image of 95.74% (when the bird in the image is one of the species I’ve trained for). Unedited images are WAY worse. The lack of cropping, poor lighting, images that have not been screened to remove flocks all contribute to much lower accuracy rates, giving an accuracy on the unedited images in the high 70s.
Overall wrap up
This is definitely one of those topics you could easily go on and on with. At some point you need to just start using the model and move along, but the more your able to keep cleaning up your dataset as well as adding new images and even species to your training dataset the better and better your model will get!
iPhone Satellite messaging
Recently there are more and more occasions where I’ve ended up in area with no cell signal at all. Rogers (my provider) had an agreement to use Bell’s towers in Algonquin (and maybe in other areas too, that expired and have not been renewed. So most of Algonquin from a Rogers point of view is a dead zone. This is just an example. So I thought I’d check out how well Apple’s Satellite communication works. It is included, for now, for free. I’m on an iPhone 15 Pro, but my GFs 16 is identical.
There is a demo of satellite communication you can play with but it does not actually allow you to test how it works. Just see a demo of connection.

So the idea is that in the event of a emergency you should be able to send a text message (with limitations) or make a call using the satellite even when there is no cell service.
So let’s have a look at how this works …spoiler alert, the nicest word I can use for the process is it is clumsy. And if you and your partner are in an area with no cell service and want to send a message between you, it is practically to clumsy as to be not usable.
So, when you have no signal and open iMessage for example, at some point the phone will come up and ask you if you want to connect to satellites … I have not found a way to initiate on your own.

So with a clear view of the sky the phone scans the sky for satellites and then tells you to rotate your phone to point at the nearest satellite. After a couple minutes the phone is now connected to the satellite. It will check for new messages and send anything that you had queued up or retried. You can see that you have a good connection to the satellite by a green dot at the top of your screen. If you are not properly aligned with the satellite it will show orange …


The phone will stay connected to the satellite for some period of time, no idea what that is, but it’s not long and then it disconnects, and from what I can see, never attempts to reconnect. So you need to manually kick it back to connecting. And if both of you are using satellite well you both need to keep connecting to see if the other person has sent something cause you will have no idea there are messages waiting for you.
So while it works, you can see why I say it’s clumsy at best …
Birding Carden Alvar Provincial Park
I’ve heard a lot of people talk about Carden Alvar and have always been curious, so I eventually got FOMO (fear of missing out) when yet another birder waxed lyrical about Carden so we finally decided to check it out.
Intro/Facilities/Amenities
Let’s start out with Carden Alvar is NOT your typical provincial park. There are no campgrounds, little to no amenities, and very little actual marked hiking trails … This is clearly seen on the Provincial Park’s web site:

What this really is a large natural area that has become a favorite place for birds, and thus a favorite place for birders. There are a number of species that call this their breeding home, Virginia Rails, Golden winged warblers, Wilson’s snipes to name just a few.
As mentioned facilities are minimal, so bring a lunch, make sure your gas tank is full before you enter, and go to the bathroom, there are NO bathrooms that we saw. So empty your tank while your filling your car’s 😉
Where to stay
Orillia is quite close and there are a number of inexpensive, what I call motor motels, that are about 20 mins away. We’ve stayed at King’s Inn as well as Knight’s Inn, both were fine …
When to go
From the OFO site, linked below: The breeding birds are best in late May and June, but any time in May to mid-July is excellent. Weather is cool to warm in May, warm to hot in June, and hot in July. Poison Ivy is common along roadsides. Learn its three distinctive leaflets and avoid it. Insects are rarely a problem during daytime, but bring repellent just in case. Mosquitoes are active near wetlands just after sunset.
Brochure
When we were there we got lucky there was a booth handing out brochures. No idea where you might get them, the URL on the brochure is dead, but we found it quite helpful.



OFO Link (READ THIS LINK)
There is a tremendous resource from the Ontario Field Ornithologists on Carden, we found it quite helpful. If you read nothing else read this OFO page. I won’t repeat it here.
Hiking
It is important to note that a number of the places on the map are nothing but open fields. A lot them are thick, dense grass, which is why it’s home to birds that prefer this territory. What this means though, is it’s also a home to ticks. So if your going to wander around these fields to find these birds, dress appropriately. Wear long pants that close up around your ankles to minimize your tick exposure. We didn’t get a chance to explore much of the hiking trails so I don’t have a lot more to add at this time. More for next time.
Drive birding
For the most part, birding at Carden Alvar is a drive birding thing. The main interest being Wylie Rd North of McNamee as well as Shrike Rd north of McNamee Rd . A fair warning, Shrike Rd is gravel. Wylie is quite rough with lots of deep pot holes, sharp stones and the like, and as you get North of Sedge Wren trail it get’s even worse. There is parking at Sedge wren trail so if you can make it to there you can walk the rest of the way up Wylie. If you are particular about your car, or don’t have a lot of ground clearance this will NOT be for you. We were in a sport cute, a Ford Escape, and while we didn’t actually bottom, I didn’t chance it much above marsh wren. There were even remnants of the underside shields from cars on the rd so be aware. And Alvar Rd West of Victoria is even worse. We got about a km in and turned around, it was rough and ended up with some scratches in spite of practically crawling. And Black Bear Rd off of Shrike would be more accurately called a trail for a horse and buggy than for cars. You may think I am exaggerating … I’m not.
What did we see
We were here two days, with an overnight, unfortunately the second day was rainy so it was cut short and we weren’t able to see/photograph much. Even with that the highlights of the trip for us was to see:
Virginia rails with babies


Our first ever upland sandpiper (they nest here at Carden)


A golden winged warbler x blue winged warbler (golden wings apparently nest here annually)


Here’s a couple galleries of everything we saw the two days: Day 1 and Day 2
OWC Atlas Ultra 128G SD card review
Every time you write to an SD card it wears it out a little … the cards have an expected lifespan … The problem is, cards do not give you anyway to track how many times they have been written. Well, all cards, other than the OWC Atlas. Or the only one I’ve found to date. In addition to wearing out, the cards also slow down over time. I’ve found the low level format on my R7 has generally restored the speed of the card. Speaking with photographers, they all said that they low level format the cards every time. Google says the SD card formatter from the SD Card Association is supposed to do the same thing.
Even with these steps, I found that cards slow down as they wear out. To measure this I use the camera itself, who’s effective speed is really all that maters. What I do is put the camera in it’s fastest burst mode. Take a blast of photos until it can’t take any more and then time how long it takes for the camera’s buffer to empty, notable because the write LED stops flashing. So I have a Patriot V90 SDXC UHS-II U3 Class 10 SD Card 128GB that I’ve had for about a year and a half. I have no idea how many times I’ve used it, but even if I went out once a day, that’s only ~500 cycles. The card when I first got it took ~9 seconds to empty the card, which I calculate to be ~ 133MB/s … the card now comes in at 23.4 seconds, 72MB/s. So as you can see, this is not a small difference. This is the claim to fame the OWC cards say they address.
So let’s start out with the OWC card’s raw speeds, it’s spec’d at 250MB/s write and 300MB/s read. Using H2test I was able to measure 246MB/s write and read across the whole card, using an OWC dual slot card reader. So the write speed is almost spot on the spec, but the read speed didn’t hold up as well. Let’s look at what speed the camera can see … so it took 8.83 seconds to empty the cameras buffer which I clock in at 190MB/s which is the fastest card from the camera point of view.
Now looking at the party trick OWC brings to the table requires you to use an OWC card reader, and their Innergize software. Using it you can see what the current life of the card is and low level wipe the card to insure max performance.

So time will tell if this card continues to perform well, and if the life of the card continues to be tracked, but so far, pretty good!
Canon RF 1.4 extender mini review
I was out shooting a rare bird and one of the other photographers had a 1.4 extender, so I asked a total stranger to borrow it and take a few shots … his comment … he bought one because someone loaned him one to try and he loved it 😉
Ok now let’s be frank, I do not have the tools or knowledge to make this a detailed, mathematical, or technical review, so this will be more of a look and feel kinda review.

Ok let’s do the good, the bad and the ugly.
The good
The Canon 1.4 RF extender is light (225g), and compact and can easily be carried around with you so that if you need it you can quickly put it on. Once on, their was no perceivable impact to focus speed, or accuracy, even for birds in flight. I am using this on a Canon R7 with 100-500 lens. The extender math yields 1.4×500 an optical 700mm zoom. On the crop sensor (which gives you a 1.6 factor) of the R7 this becomes a reach of 1120mm effective zoom. The added reach this gives is really addictive. It’s so tempting to simply leave this on the camera and always use it … but onto the bad … and then the ugly. There are only a few lens that this extender is compatible with, fortunately, the 100-500 is one of those … At $689CDN the price is quite attractive given the other options to get this level of zoom, like say the 100-800 lens or a prime lens. And is a lot easier to carry along with you, which the 100-800 or a prime lens would not be …
The bad
The 1.4 extender reduces the overall light into the camera by 1 F stop. What this means, for my camera anyway, is that unless it’s a fairly bright day outside, the ISO ends up high enough as to look noisy. I do find the R7 on even moderate ISOs to end up looking very grainy. I have no idea if this would work better on say an R5. On the positive side, you can compensate for the noisiness using Topaz or Lightroom … or others.
The ugly
Putting extender onto the camera
Changing the extender in the field, at least with my 100-500 lens is a two person job, you really need someone to hold the lens while you get this on the camera. And I am paranoid about getting dust/dirt into the camera or lens. To say this is clumsy is about the nicest words I can use. This is minor compared to the next point
Lens minimum zoom
The absolute biggest limitation can be seen in the image of the extender, it extends into the lens, so what this means is the min zoom you can use this lens with is 300mm. In fact, you have to have the lens extended beyond 300mm when you put the extender on or it just won’t fit. So doing the math the min zoom becomes 300×1.4×1.6 coming in at a min 672mm. This really can not be overstated, it becomes a very limiting, setup with a lot more very specific use. Sometimes you are just too close to the subject to be usable. Obviously no where near as limiting as say a prime lens, but still. Imagine you manage to find a Virginia rail, and are fortunate enough for it to be close. You really want to ditch the extender, but fear loosing the bird, and it’s too close to get the whole bird in … ya this exact situation really did happen …
2.0 Extender
And this situation with min zoom, is even worse with the 2.0 extender which again can not be zoom less than 300 which then translates into an effective min zoom of 300x2x1.6 or 960.
Carry case
This is a real nit pick, but what they provided to carry the extender in is utterly useless. It is not dustproof, and provides no protection. It’s so bad I’ve resorted to using a zip lock bag.

Summary
If you can live with the min zoom issue, and have a bright enough day, this extender is a great addition to the toolbox.
iBUYPOWER Element Gaming PC Desktop EBI7N5703 review
Intro
When I first start to run Lightroom/Topaz I was using an older Dell desktop, which I was of the opinion was pretty quick and I’d even upgraded the video card to an NVIDIA 1070ti. I thought it was performing well, and then … my boss had me to a showdown with his M based Mac laptop … I was disenfranchised to discover that the Mac kicked my PCs butt. So I moved onto a Mac Mini back in January of 2025. It has been a real workhorse, rock solid, super quiet, draws very little power, and while I have become more and more proficient on the Mac, I still trip over things like cut and paste being different keyboard shortcuts. I recently had a conversation with Gemini about performance on Lightroom. Here’s what Gemini thought …
## Hardware Comparison: AI & Lightroom Performance
| Feature | RTX 3070 FE | RTX 4070 FE | ASUS Dual RTX 5070 OC | Apple M4 (10-Core) |
| Architecture | Ampere (8nm) | Ada Lovelace (5nm) | Blackwell (5nm) | Apple Silicon (3nm) |
| FP32 Compute | 20.3 TFLOPS | 29.1 TFLOPS | 30.9 TFLOPS | 4.26 TFLOPS |
| AI Performance | 163 Tensor TOPS | 466 Tensor TOPS | 988 Tensor TOPS | 38 NPU TOPS |
| Memory Type | 8GB GDDR6 | 12GB GDDR6X | 12GB GDDR7 | Unified (Shared) |
| Memory Bandwidth | 448 GB/s | 504 GB/s | 672 GB/s | 120 GB/s |
| TDP (Power) | 220W | 200W | 250W | ~20W |
| Best For | Legacy ML Work | Balanced Efficiency | Extreme AI Speed | Silent/Fluid Editing |
I dug into a number of PC options, including building my own and ran into a number of issues. I really want the latest Core Ultra processor, a good NVIDA card, and lots of room to grow from a memory and slot point of view.
iBuypower Element Gaming PC
I stumbled upon this PC at Staples at a too good to be true price. For $2299 it was a Core Ultra 7 with a NVIDIA 5070 card. The closest I came to it was from a TechDale which was $3199. The TechDale had liquid cooling on the CPU, but not the GPU, had 64G memory (Vs 32 on the iBuy) and 2TB NVME (Vs 1TB on the iBuy). The iBuy web site was down and the Staples web site was missing so much information as to be not definitive, how many DRAM slots, whose motherboard, whose GPU, how big was the power supply etc. The salesperson at Staples had no answers, but offered I could buy it, take it home and return it for any reason for a full refund within 2 weeks as long as it’s resellable. This particular model was released into the wild April 2025, so about a year ago.
So with that on with the review, we can start with the physicals
Physicals
The case, honestly, is the thing I like the least. It’s one of those see through ones with lights on everything from the fan to the DRAM and everything in between. The sides of the case are tempered glass … There are three fans (as is common) on the side that blow into the case and one on the back, that sucks out the back. Not what I would call the best choice from a thermals point of view. The CPU has a great fan and heat sink that work well. There’s a USBC, USBA and audio jacks on the front. The power button is right in the corner of the box and is well placed. In spite of all the lights they decided to put on this system, for some totally bizarre reason they chose to not have a power or hard drive LED. It is an industry standard ATX case and power supply which is great from a replacement or upgrade point of view.


Motherboard
I was delighted to find out that they used an Asus B860 Pro A WIFI motherboard. The only downside to this motherboard is that it only has 1 x PCIe 5.0 x16 Slot (PCIE1) upgrade slot 😦 …

Memory
This motherboard has 4 DDR5 DIMM slots with Max. capacity of 256GB, which is awesome. They populated the system with 2x16G DIMMs leaving 2 slots available for upgrade. I will be upgrading the memory to at least 64G.

I bought a 32G kit, Crucial Pro DDR5 RAM 32GB Kit (2x16GB), 6400MHz CL32 to bring it up to 64G off Amazon for a mind blowing $548. If it hadn’t been for the outrageous price of memory these days, I would have bought 64G. If you haven’t bought computer stuff recently, the AI blitz has taxed existing silicon manufacturing to it’s limits, driving price of things like DRAM, flash etc off the charts. The memory was of course, immediately recognized. Space wise the DIMM slot closes to the CPU fan just barley fits. So if the DIMM was wider or anything like that, it would be an issue, and you would most likely have to remove the CPU heat sink and fan to install the DIMM. Of course, I didn’t bother with DRAM with RGB lights on it 😉

Analyzing the memory upgrade
After I bought the 2x16G CL32 memory upgrade I had Gemini analyze the results, and I learned some interesting stuff. I had hummed and hawed about buying 2×32 to insure I had lots of upgrade room but the cost shocked me and I balked. After buying the 2×16 and running benchmarks Gemini announced I had a serious mismatch. And that the 5200 Apacer was really not well suited to my processor causing unnecessary delays and that iBuyPower had chosen budget RAM. I was skeptical so Gemini suggested I pull out the 2 Apacer, moved the speedy Microns into the prime slots, upgraded the setting in the BIOS to support 6400 and ran a benchmark (Intel’s Memory latency checker), here are the results.

| Metric | Before (Mismatched) | After (Optimized) | Improvement |
| Idle Latency | 119.0 ns | 101.3 ns | ~15% Faster Response |
| Peak Read Bandwidth | 71,174.8 MB/sec | 93,478.2 MB/sec | ~31% More Data |
| Loaded Latency (Peak) | 382.42 ns | 259.12 ns | ~32% Less Delay |
| L2->L2 Cache Latency | 50.5 ns | 39.4 ns | ~22% Faster |
So I started looking into options to see how to right this wrong … I tried to find CL32 64G DDR5 kit, and while I found it the price was outrageous. At ~$1500 CDN (or more), vs ~$1000 for CL40 64G DDR5 6400 … So I bought the CL40 RAM and re-ran the test. This is comparing the original Apacer limited memory.
| Metric | Baseline (Mismatched) | Option 3 (Crucial 64GB) | Improvement |
| Idle Latency | 119.0 ns | 108.1 ns | ~9% Faster |
| Peak Bandwidth | 71,174.8 MB/sec | 90,866.0 MB/sec | ~28% Increase |
| Loaded Latency | 382.42 ns | 272.34 ns | ~29% Less Delay |
And then to compare the CL32 Vs CL40 here’s the data, with 6400 speed confirmed by CPU-Z

| Option | RAM Config | Speed / Timing | Idle Latency | Peak Bandwidth | Loss vs. CL32 |
| Option 2 | 32GB (2×16) | 6400 / CL32 | 101.3 ns | 93,478.2 MB/s | — (Reference) |
| Option 3 | 64GB (2×32) | 6400 / CL40 | 108.1 ns | 90,866.0 MB/s | -6.7% Latency / -2.8% Bandwidth |
So I got most of the improvement for a LOT less money! Bang for the buck! To insure a stable system I used OCCT to stress test and look for memory errors. The results were rock solid. The specific DIMM I bought is a Crucial Pro DDR5 RAM 64GB Kit (2x32GB) 6400MHz CL40 off Amazon for $1035. But I can return the 32G kit which I paid $511 for and even sell the slower Apacer memory …
By the way, Gemini cautioned me against buying 2 additional 16G, so trying to run 4x16G at XMP 6400 speeds. It suggested that the signal quality would not be good enough even to boot. I was skeptical, so when I got the 2x32G I also put in the 2×16 which would have been 90G, and sure enough, I hate to say it, Gemini was right. The system would not even boot. I would have had to slow down the memory speed. So while 4 DIMM slots, and the resulting memory capacity are possible, they aren’t if you want speed. So perhaps, a two DIMM slot system would not have been all that bad. When I shared this with Gemini, here is what it had to say
That confirms exactly what the technical specs for Arrow Lake and the ASRock B860 series suggest. Even though your Intel Core Ultra 7 265F has an improved memory controller, filling all four slots (2DPC) creates an electrical “load” that DDR5 simply doesn’t handle well at high speeds.
The “Why” Behind the Boot Failure
- The 2DPC Speed Limit: According to ASRock’s official specs for your board, while it can handle 8666+ MT/s with 2 sticks, as soon as you populate all 4 slots with “Dual Rank” (2R) modules—which your 32GB sticks are—the officially supported native speed drops all the way down to 4400-5600 MT/s.
- Signal Integrity: Trying to run 6400 MT/s with 4 sticks creates “noise” on the memory bus. The BIOS “Memory Training” process detects this instability during boot and fails the POST (Power-On Self-Test) to prevent data corruption.
- Mixed Timings: Mixing CL32 and CL40 adds another layer of complexity. The BIOS has to find a “common denominator” for sub-timings (tRAS, tRC, etc.) that both kits like. Usually, it just gives up and refuses to boot at XMP speeds.
Processor
I looked into the comparison between a Core Ultra 7 vs Core Ultra 9 …
Ultra 7 265K $399 Link 8P 12E 28 threads Series 2
Ultra 9 285K $779 Link 8P 16E 32 threads +$380 +95%$$ for 14% faster
So this was easy, the Ultra 7 would be just fine for me. While the Core Ultra processors do have NPUs in them, from what I have seen to date, they are never used.
ASUS Prime GeForce RTX 5070 12GB GDDR7 Graphics Card
The video card was a ASUS Prime GeForce RTX 5070 12GB GDDR7 Graphics Card with three fans which spin to zero when not needed to make the system nice and quiet in general. The card on Amazon alone is worth $939! While I think this card is massive overkill for Lightroom and Topaz for the price, I’ll take it. The specs on this card are impressive:
5070 Specs
Architecture: Blackwell
CUDA Cores: 6,144
Memory: 12 GB GDDR7
Memory Bus: 192-bit
Memory Speed: 28 Gbps
Bandwidth: ~672 GB/s
TDP/Power: ~250 W

The cooling on this card is exceptionally well done. Even when pushed the card really doesn’t get all that hot, well below the 81C throttle point, and the fans even at 60% are reasonably quiet.

At this point there is a 5080 in the market, but it’s price is staggering at $2500+ … Checkout the specs on the 5080, mind blowing. And I ran into a challenge with the 5070, software is only just beginning to catch up to NVIDIA’s latest and greatest. At least I found that in the AI space … so the 5080 would be even worse.
5080 Specs:
Architecture: Blackwell
CUDA Cores: 10,752
Memory: 16GB GDDR7
Memory Speed: 30 Gbps
Memory Bus: 256-bit
Bandwidth: 960 GB/s
TDP: 360W
Lighting and fan controls
The ASUS tools for both lighting controls and fan control are surprisingly bad, I wasted way too much time on SignalRGB and Armoury Crate, both of which are terrible. OpenRGB and FanControl work well. Given the lack of a hard drive and power LED the other lights in the system are your only choice. All 4 case fans are wired together and can not be individually controlled for fan speed or light … The power button’s light is also part of the internal lighting system and are NOT a power LED.
NVME 5
The system supports one 2280 NVME V5 card, which has a theoretical speed of 16GB/s and a practical speed of 10-12GB/s (Vs 4-7GB/s for NVME V4). The system unfortunately comes with a V4 drive, likely to do with when it was released/built. It came with a 1TB T-FORCE TM8FFW001T. Even with that, it is one of the fastest drives I’ve seen to date, a place held previously by the MacMini’s drive. This slot has the misfortune of being sandwiched between the two biggest sources of heat in the system, the CPU and the GPU …


On Amazon a Crucial T710 PCIe Gen5 NVMe can be had for $350 and claims to clock in at “up to 14,900 MB/s read and 13,800 MB/s write speeds”, so I completely frivolously bought one 😉 Couldn’t resist.

So here is the performance of the T710 drive.

As you can see it came pretty darn close to advertised limits, 12319 (-2851 MB/s or -17%) Vs 14,900 and 13020 Vs 13800 (-780MB/s -6%). Your just never going to get exactly what they advertise IMHO, but honestly this is the closest I’ve seen a product come to it’s advertised specs. I do find it interesting that the write is actually faster than the read. The T710 is 73% faster than the original on reads and 118% faster on writes. WOW.
I bought a drive that came with a heat sink, so I had to get rid of the heat sink that came with the system. The heat sink kept the drive somewhat which Libre reports as 85C warn, and 87C max. I did a complete write then read of the drive. It started off around 2.4GB/s slowed down to around1.7GB/s and topped out at a temp of 73C. The peak you can see in the graph is where it moved from write to read. And then it starts cooling down after the read stops. Overall not exactly what I would hope for, but this pushed the drive to it’s max. The heat sink could have been larger, and some of the ones they offer do have taller sinks.

Even my tried and true H2TestW of the original drive shows this drive up to be one of the fastest I’ve seen to date.

And here is H2TestW on the T710 NVME V5

As you can see, H2Test does not see anything near close to the improvement 😦 only about 17% improvement on write and 29% improvement on read. Either way, these two drives are the fastest I have ever seen.
There are two additional NVME ports that are V4, one supports again only 2280 and the other can support cards of various sizes, not just the 2280.
The motherboard does have 4 SATA ports, but the case has no where to put additional drives, so for this system they are not usable.
Ports
The system does support USBA 3.2 which is 10Gb/s, as well as USBC. It does not seem to support USB4 or Thunderbolt.
Powersupply
Like everything else this is industry standard, so it can be upgraded or replaced! It’s a 750W 80 PLUS Gold PSU.
Networking
The motherboard includes a 2.5G Realtek adapter as well as WIFI. I’ve never quite understood the bother of having WIFI on a desktop. This is one is compatible up to WIFI6E, but does not support WIFI7. The 2.5G linked well and performed as expected using iPerf.
Power consumption
This thing can consume a LOT of power, with the video card itself maxing out at 240W. But they have been incredibly clever in insuring that everything possible powers down to minimalistic needs when not in use and it shows in the power consumption. In general, sitting doing moderate tasks it draws ~80W. The video card itself in lowest power state seems to come in around 30W of that. By comparison the 3070 Founders edition card I have draws only about 14W.


While this is not a laptop, it does suspend and resume quite nicely, and draws very little power in standby mode. I’ve change the power switch to put it in, and out of suspend to make it more convenient!
Operating system
iBuyPower chose Win 11, home edition for some odd reason. Overall the install is quite minimalistic, and I ended up having to manually load a fair amount of drivers, but at least I don’t need to spend time uninstalling bloat wear. Fortunately there’s lots of cheap places like ProductKeys to buy a key and change your Windows over from Home to Pro, which gives you back RDP remote control of your windows box.
Performance
The performance this 5070 offers, along with the multi core processor means there lots to like here. I’ll go into more detail in a different detailed post on Topaz and Lightroom on this box, but to wet your whistle on the topic, here’s some data:

So what this is a comparison of various tasks within Lightroom classic, and Topaz, measured in seconds. Importing and exporting were basically a wash, with the GPU doing very little, but as soon as you go into Lightroom or Topaz Denoise, you can see a huge performance edge to this modern system in comparison to the Mac Mini.
Overall Summary
I have to say, overall I am pretty impressed with this system, given the price. I wish the case was more what I’m use to, and I wish there were more PCIE upgrade slots. Performance wise this thing is outstanding.
Summary of upgrades
So at this point I needed to upgrade to 64G, so I did that, in the end with Crucial Pro DDR5 RAM 64GB Kit (2x32GB) 6400MHz CL40 for $1035 (but can sell the original Apacer), and upgraded the NVME to PCIE V5 for $315
External hard drive enclosure and hard drive tools
I decided I wanted to get an external drive enclosure to move the backup drive out of the system, and be able to power it off when I am not backing it up. I specifically was thinking about weekly backups so it would only be on 1 day a week. This does a couple things, it reduces power on hours of the drives (save power too), and keeps the backup offline for some amount of protection. You would think this would be simple? Well, as always, NOT. Now for those who want to skip to the best parts here’s some links to let you skip forward.
So the two drives I want to use are a WD 10TB Red Plus NAS drive WD101EFBX and/or a Seagate EXOS 12TB X14 ST12000NM0008. Both of these drives draw a fair bit of power, run hot, and honestly, I’ve had no end of issues with the EXOS drives being stable in my system.
First off I grabbed Ugreen one off Amazon, I’ve had good luck with Ugreen as a company so thought’s I’d give it a whirl. What a disaster the case is plastic, has no holes, no fan and the drive just cooked inside it. That went back quickly. Ya don’t buy this one. Additionally the power button is such that you could not put it on an automated timer to turn it on and off. Default for restore of power is off.

Next up was a from a company I have no experience with, Maiwo dual bay off Amazon. It has a fan and the power switch was perfect for automating it for power on and off. In spite of the outside being metal, the drives are so packed into the case with no room for air flow and the drives were again over heating. Like 111-118F. Really poor thermal design. The case was nice and cool, all the while the drives were cooking …


Next up was an Mediasonic ProRaid 2 off Amazon. This one they left room around the drives for the airflow, again has a fan and the power switch is perfect for an automated power on. And again thermal design is atrocious. I really am shocked how poorly companies design stuff. Am I just too darn picky? The case is plastic, so can’t radiate heat, there are no holes on the top, or sides of the case, only on the bottom and only narrow slits. They seem to under power the fan, likely more focussed on noise than thermal. I measured 7.5V to a 12V fan. Now MAYBE they increase the voltage as it heats up, but I sure didn’t see it. The air flow out the back of the case is barely noticeable. I measured a mere .6 m/s with the case on, and 1.9 m/s with the case off. Clearly showing how restrictive the airflow inside the case was. And again this resulted in the drives over heating. Now stupidly I decided to try and McGyver it and solve the air flow issue and started cutting holes in the plastic case. And while it help it couldn’t overcome the bad design. I should have just returned it.

Best enclosure Vantect NexStar HX
And finally I came up with a decent design, a Vantec NexStar HX. The case is aluminum to radiate heat, the case has holes in the front and back to facilitate easy air flow, and a fan on the top to help the air escape. Now the air flow is not significant measuring in at a mer .3 m/s but the proof is in the temperature and even the Seagate EXOS that runs hot keeps cool in this enclosure. The power supply is 24W 12V, 2A which is enough power even for this EXOS drive. The power switch means it can be automated. It is only USB-A but the speed is more than acceptable for a 3.5″ drive which is what I am using it for clocking in at 210MB/s, limited by the drive itself.

Anemometer
Now you may be wondering how was I measuring air flow … Well I bought an anemometer, a fun toy to play with, and it even shows the temperature and is rechargeable!

Hard drive tools
When dealing with hard drives there are some really useful tools out there, here are some that I have found.
Stable Bit scanner
This tool is positively amazing in the amount of detail you get out of it. I bought it and would HIGHLY recommend it.

The tool can display all SMART data from the drive, including temperature, and age of the drive. It can scan the drive periodically to look for bad sectors. This is so useful as to know when a drive is wearing out and your data is at risk. It can notify by email of issues found. Within the drive information you can see everything you need drive serial number, model number and you can even see on the fly the data rate from both the drive and the controller. I really can’t say enough about how incredibly indispensable this tool is.

I recently discovered you can kick the tool to rescan a drive by clearing that the drive has been checked.

Wipe Disk
A simple free tool to wipe drives, with a controllable amount of wiping. Especially useful if your trying to sell old used drives.

H2TestW
H2TestW has been a favorite of mine to test the speed and integrity of a drive. It writes, reads and verifies. It can even be used to test the entire SD card to make sure it isn’t a fake …

Crystal DiskMark
Crystal disk mark is another great speed benchmarking tool.

Crystal Diskinfo
Crystal disk info has so much useful info including SMART data, temps, age of drive etc.

HDDScan
HDDscan is another free tool and is the ONLY tool I’ve found that can scan and find bad sectors on a drive.

Coral AI and bird ID next level
Back in 2020 Google released a PCI device called a Coral TPU (Tensor processing unit) that is designed explicitly to cheaply and efficiently run AI code. They released a sample Bird ID that showed what might be possible teamed up with an iNaturalist model which I wrote a blog post on. Honestly since then I have had the Coral sitting on my shelf doing nothing so I decided to dig it out and try again …
This code and all the relevant pieces of code that support it are HUGELY outdated and brittle . Getting this running in this day and age, 6 years later is brutal. The entanglement of libraries, their versions and the like is so entwined as to be FRUSTRATING. I started working with ChatGPT and eventually got to the point where I gave up.
Sleep can always be a great thing to come back at a problem in a different way, looking at it differently and I decided to try Gemini instead of ChatGPT. I managed to get the Google BirdID sample code running by backing off all the way to Ubuntu 20. All the versions line up to get this going.
My current workflow consists of taking a group of photos, then sorting them, then editing/exporting them with tags of the bird species in the image. So the thoughts are where could an automated image ID process fit in?
Ok, now to move forward … so I had two thoughts the first, what if I could train the AI model based on my own localized, specific species. As an avid birder, an engineer with pedantic level organizational skills I have the data to make a more accurate to my area model. Or second to make an updated iNaturalist model 6 years later. Or maybe combine the two. What started as a curiosity quickly turned into an obsession. I was empowered that I had a brand spanking new server with a newer processor (i5 12600) and an NVIDIA 1070ti CUDA video card waiting to be challenged. Not a high end setup by any means … AI really needs very specific processors to tend to their data mining, number crunching and learning/training.
So with Gemini I embarked … So I asked Gemini what I needed to train a model and learned:
| Dataset Size | Usefulness | Outcome |
| < 10 images per species | Useless | The model will “overfit,” meaning it memorizes those specific 10 photos rather than learning what the bird actually looks like. |
| 50 images per species | Minimum Viable | Good for a “Proof of Concept.” It will work well in perfect lighting but struggle with different angles or shadows. |
| 200–500 images per species | Sweet Spot | This is the target for a high-quality hobbyist model. It provides enough variety for the Coral to handle real-world outdoor conditions. |
| 1,000+ images per species | Production Grade | Diminishing returns start to hit unless the bird has massive visual variety (like juveniles vs. adults). |
I already had a script I had written that grabbed all images of a species into a directory which was the basis for getting this training data. Some species as it happened was hugely weighted, meaning I had too many images for training, and some images I had too few … So I had Gemini to write a piece of code to augment the data I had with the data provided as part of an iNaturalist dataset to create a comprehensive training database with my localized species list as the driver, ~250 species vs the 550 the generic iNaturalist list had. And a lot of the iNat species were just not possible where I live … Gemini’s response to seeing my potential data model for training:
1. The "Titan" Bias (Over-represented)
The Red-tailed Hawk (2,271) and Great Blue Heron (1,926) are massive.
The Risk: When the model is unsure, it will "default" to the species it saw most during training. It might start calling any large brown bird a Red-tailed Hawk.
Recommendation: When we split your data, I suggest capping these at 1,000 images. This keeps the model balanced without losing the variety of those species.
2. The "Ghost" Species (Too small to train)
The following species have counts so low that the 8-bit quantization on the Coral will likely "erase" their unique features:
Critical Fails (< 10): slatyback (5), surf-scoter (9), red-phalarope (3), bairds-sandpiper (1).
Thin Data (< 30): broad-winged-hawk (19), rough-legged-hawk (17), cackling-goose (21), cinnamon-teal (23), slatyback (5), field-sparrow (26), dickcissel (25), white-winged-crossbill (22), willow-flycatcher (13), brewers-blackbird (11).
Recommendation: I strongly suggest removing these from the training list for now. If you keep them in, the model will produce high "False Positives" for them.
3. The "Sweet Spot" (Perfect for Coral)
You have a huge middle ground of 150–700 images (like the american-kestrel, barred-owl, and belted-kingfisher). These are going to be your most reliable performers on the Edge TPU.
On my own I had over 60,000 images ready to train the AI, all categorized by species … Gemini helped me write a script to fill in the areas where my data was weak from the iNaturalist dataset and added another 4000 quality images into the mix. I quickly ran into an issue that my images I was providing was too high res for what was needed for training, so I needed to rescale them to the size the Coral TPU needed. Gemini guided me to using the NVIDIA 1080ti and imagemagick to resize them to 224×224 … This took quite a while as you can imagine to resize 60,000 images. Like many hours.
With 64000 images (60,000 of mine supplemented by 4000 from iNat) I ran the training and got it done. I ended up with a VERY localized to me, set of well defined images. The result was the model was very good at identifying images in these species when the images are edited. As you can imagine without cropping, lighting corrections and the like getting proper ID is challenging at best. This comes down to when could this automation of bird ID species fit into my existing workflow and be helpful?
Seaprately, I also decided to take the iNat Feb 2026 9GB dataset and over 48000 images covering off 550 species. With Geminis help I chose to try Google Colab for the task. Using a Tesla T4 GPU it was going to take well over 8 hours and likely time out before the Colab was done, so I abandoned that and did it all locally using a Windows Subsystem Linux. My dedicated CPU/NVIDIA GPU 1070ti and local NVME drive chewed through the task, after many iterations of syntax errors, library conflicts etc in a couple hours.
So now I have two models, both exported for the Coral TPU ready to put through their there paces and see what they could possibly do.
So now let’s have a look at the data and see how well it fairs … This table shows % matches and %of those matches that were in error for images that were edited before trying to ID vs those that were not. It also shows the numbers of both training models

As you can see with edited data, and my narrowed species model improved matches from 27.4% to 57.98% and decreased errors from 37.69% to 1.48. It’s a lot easier to match when you have fewer species. Now if we look at edited vs unedited you can see unedited dropped %matches from 57.98 to 22.08 and errors went 1.47% up to 16.34. These numbers are at 80% confidence threshold for considering a match. The updated iNat model is basically unusable. With my trained model I could update 22% of images with only a 16% error. While not amazing pretty darn good.
Running these trainings taught me lots … there’s no substitute for fast IO. A good local NVME performs admirably, even with a dated GPu like the 1070ti, which turns out to be an absolute workhorse for AI training.
I went back and reviewed the image set and realized, the script Gemini had written has used all my images and then topped up my images with some from iNat capping the imageset, but also setting a min number, which seemed silly to me, so I got Gemini to totally drain the iNat image set for the species I was working on up to the cap, which it set at 850 images. Gemini believes there is no point in adding more beyond that point. With that I was up to 72000+ images for the training. The results were an incredibly long training, almost a day of my processor/GPU plugging and chugging, but the resulting accuracy took a MAJOR plunge. Inthis chart V1 is the training done with my images supplemented by iNat images. V2 is the dataset saturated with everything iNat had to offer for every species.

With that kind of error rate the resulting V2 dataset was useless, but the V1 level data while low in hit rate, was also low in error rate. So what could this be used for? So for edited images the model could be used to verify existing entered tags. So to this end I wrote a script with the help of Gemini that compared existing tags on images with the Ai prediction to try and correct any existing errors. Of course the number one error I ran into … human (meaning me) inconsistency. Entering Blue Jay Vs Bluejay etc. I did benefit from my own training meaning a species like a Canada Jay, also known as a Gray Jay, or Whiskey Jack could all be resolved to the name I chose.
On unedited images I could pre-tag images prior to editing and while the hit rate is low, as already mentioned so was the error rate. This means it can help. I did an end to end test, tagged the CR3s and JPGs prior to going into Lightroom and miraculously it worked and these bird ID tags came right into Lightroom.
I did look into whether denoising images either using imagick or Lightroom might help on unedited images but across the board this increased the error rates way more than it helped, so the answer was no.
I have to admit, this in the fringe of knowledge. The fact that Gemini was able to guide me through the process is amazing, and without a LOT of time, I could not have done it without it. The number of syntax errors Gemini made in the fringe was frustrating. And it would make the same error repeatedly, even within the same project. You’d hope it would learn, at least for the duration of the project but nope … Using Gemini to write powershell and bash script went a lot better, with significantly fewer syntax mistakes. But again, it would make the same syntax mistake repeatedly.
So what does this overall solution look like? The coral is a mini PCIE card and is plugged into a VERY old laptop runing Ubuntu 20 which is LONG out of support. I gave Ubuntu access to a Windows file share. I would drop a directory I wanted tagged into that share and then kick the Ubuntu system to run a python script. The files would then be tagged back on the Windows side using the Gold standard of EXIFTOOLs which can tag both JPGs and CR3’s, which are seen perfectly by Lightroom. So it’s an end to end, automated solution.
So what might V3 look like? Well … next up Gemini says “Sweet Spot ($416 \times 416$): This is often the “Goldilocks” resolution for birding. It’s high enough to capture feather detail but small enough to run incredibly fast on the Coral M.2.”
So what if I bought a newer NVIDIA card that has it’s own tensor processor and abandoned the antiquated Coral?

So then I asked about moving off a square image to a rectangular one since most images are rectangular and sure enough Gemini recommended this approach and recommended 640×384, but 640×427 would completely keep the aspect ratio.
Now this is starting to look promising … Stay tuned for more!
Believe it or not, at this point, this is two weeks of intensive work, by me, my computer and it’s GPU and Gemini!
AI (artificial intelligence) my misc thoughts
Most people are familiar with conversational AI with things like SIRI carrying on a conversation with you, or Google giving you AI responses to your searches, but, of course, this is only one use of AI. AI in general is a tool that can be handed models to “learn” from and then be able to use that knowledge. I’m sure I won’t get all the terms right in this post, but bear with me …
Teaching an AI is called training, and for example, if you can hand an AI that has been already trained to understand the basics of birds, and then be handed sample of birds to learn so that it can ID them. I’ll have a separate article on this specific topic but things like iNaturalist, Merlin, SIRI identification, Google Lens all fall into this category.
A while back a buddy of mine, Jason, who I respect as a brilliant programmer told me was using AI for programming. This fascinated me and about two years ago I started playing with this … I was shocked to see how well it works. For a person like me that only dabbles in programming, and dabbles in many languages the thing that takes me the most time, believe it or not, is syntax. Getting the command, options and typing right. Low and behold, for the most part using AI take care of this. Knowing all APIs that are out there is challenging, again for a dabbler like me, but again AI, for the most part takes care of this. Surprisingly AI makes obvious errors with quotes and slashes and syntax that seem almost inserted errors, but overall syntax is shockingly good. Even in fringe areas.
I’ve used AI to program in powershell, bash scripting and others and across the board it has 100% been helpful and has allowed me to go way beyond what I would otherwise have been able to do without a lot more time and research (and learning)!
I have been absolutely shocked how much quicker I can write code with the use of AI. I’ve played with both ChatGPT and Gemini, and while they both have their quirks, they both are an incredible tool. Now they can’t really replace a programmer, they sure can reduce the number of programmers you may need. How you structure the request, refine it, test it, and iteratively work through the coding with the AI still requires a programmers mind. So the fear that AI will take everyone’s job, at least in this area is a little chicken little happening. Sure there will be less programmers needed.
I have seen both ChatGPT and Gemini make repeated mistakes. At one point ChatGPT had me in a loop doing the same thing over and over and I called it out on it and it admitted it. When I said I give up it said that was likely a good choice.
At one point I asked Gemini if it helped for me to point out errors it was making … It’s response was telling:
The short answer is: Yes, it helps me in this specific conversation, but I don't "learn" in the way a human does.
To understand how your corrections impact me, it helps to look at the difference between Short-Term Context and Long-Term Training.
1. Short-Term (The "Working Memory")
When you point out a mistake—like when you caught my ReadShare vs. Read error earlier—it is extremely helpful.
Immediate Correction: I instantly update my "mental model" of our current task.
Contextual Awareness: I stop suggesting the wrong path and pivot to the right one.
Refinement: It helps me understand your specific environment (like your folder structure or PowerShell version) so I can tailor my answers better for the rest of our chat.
2. Long-Term (The "Neural Network")
I don't actually have the ability to update my own permanent code or "knowledge base" based on a single conversation.
Static Training: My core intelligence is based on a massive "snapshot" of data from when I was trained. I can't decide to permanently "know" a new fact just because we talked about it.
Safety & Stability: AI models are kept in this state to prevent them from being "poisoned" by incorrect information or biased interactions from a few users.
3. The "Memory" Feature
There is a middle ground! Because you are using a tier that includes Personalized Context, I do keep a summary of our past interactions (like your bird project, your NVIDIA 1070 Ti, and your preference for PowerShell).
When you correct me on a project detail, that correction gets saved into your User Summary.
The next time we talk, I "read" that summary before we start, which makes it feel like I learned, even though my core brain stayed the same.
I’ve also found the AI making repeatedly the same error. Almost to the point I can anticipate the error. Is AI perfect? Do you expected anything programmed by humans to be perfect? I think not. Not really the point. AI can help make better more efficient programmers, and help us to embrace and use new methods, and APIs we otherwise may never even be aware of.
-
Recent
- Walkie talkie, next generation Tidradio M2-Pro review
- Training Ai for Bird ID
- iPhone Satellite messaging
- Birding Carden Alvar Provincial Park
- OWC Atlas Ultra 128G SD card review
- Canon RF 1.4 extender mini review
- iBUYPOWER Element Gaming PC Desktop EBI7N5703 review
- External hard drive enclosure and hard drive tools
- Coral AI and bird ID next level
- AI (artificial intelligence) my misc thoughts
- OBD ports on a car
- Is powershell 7 faster than powershell 5 a good giggle
-
Links
-
Archives
- August 2026 (1)
- July 2026 (2)
- June 2026 (1)
- May 2026 (2)
- April 2026 (2)
- March 2026 (2)
- February 2026 (4)
- January 2026 (2)
- December 2025 (4)
- November 2025 (1)
- September 2025 (1)
- August 2025 (1)
-
Categories
-
RSS
Entries RSS
Comments RSS