Saturday, September 20, 2025

ISC DHCP Migration to KEA

My humble advice is don’t. KEA is a boat-load of work and disappointment. From functional changes to design decisions, you will only find complexity and loss.

 

Lets start with comments in the configuration file. Their major design decision to use JSON (JavaScript Object Notation), a data interchange format. While it is “human readable” it is NOT inherently a configuration file format. Comments in ISC DHCP where text sequences started with #. Useful everywhere as any text following a # on a line, is ignored. In KEA comments become a JSON object in a JSON array. So here is an example:

"user-context": {

            "comment": "second floor",

            "floor": 2

        }

You can no longer put it where you need it. It doesn’t help with organizing the elements of the configuration. You can’t comment-out something you don’t need right now, but don’t want to delete. And, frankly, it makes the configuration more obscure and significantly more work. This is just a bad design decision; period.

 

Verbosity:

From ISC DHCP configuration of hosts the simple statement:

option host-name "server-one";

becomes lots of name/value pairs:

“option-data”:  [

      {

        “space”:”dhcp4”,

        ”name”:”host-name”,

        ”code”:12,

        ”data”:”server-one”

     }

   ]

 

From ISC DHCP logging:

log-facility local6;

becomes this simple JSON array:

"loggers": [

      {

        "name": "kea-dhcp4",

        "output_options": [

          {"output":"/var/log/kea-dhcp4.log"},

          {"output":"stdout"}

        ],

        "severity": "INFO",

        "debuglevel": 0

      }

    ],

 

Let’s move on to functional changes:

 

“ddns-updates”: true/false scope has been moved from “subnet” and “host” to a global “enable-updates: true/false”. Isn’t this a loss of functionality?

“update-static-leases” is obsolete. I have no idea what replaces it if anything.

“qualifying-suffix” has been rescoped from “subnet” to global.

Dynamic DNS updates has been moved to a separate server (D2) which must be separately configured from the KEA DHCP server and managed.


The above is not an exhaustive analysis, but an experiential slice.  
My guess is that ISC DHCP, even since it has been deprecated, will be around for some time to come. It is stable and it works, at least for LAN use.

 

Tuesday, April 8, 2025

Synology RS815+ Would NOT power on

I did a lot of surfing in search of an answer and experimenting. In my case it wasn't:

the power cord
the power supply
the latching transistor (Q4 I think)

It was just the mainboard battery CR1220!

The battery holder is both tenacious and fragile. So be careful when removing the battery. Prying it up from just below the battery while putting some outward pressure on two of the four "clips" should do the trick.

BTW. There are two knurled knobs on the back of the unit that hold in the mainboard which slides out. 

After replacing the battery, the unit powered up with no problems. It must be a required input to the power-up sequence. Live and learn.

Wednesday, March 27, 2024

Minisforum UM690 Main Board Removal

Last updated: Mar 27, 2024


This particular mini pc presents a puzzle when removing the main board. So, I am sharing my approach in hopes that it helps.


1 - Pry out the two rubbery feet and two triangular corner panels from the bottom; they are held in with some adhesive.

2 - Remove the four Philips-head screws just uncovered.

3 - Use a pick to gently pry off the bottom panel.

4 - Remove the four screws at the outside four corners of the main board. NOTE: DO NOT remove the four screws that are more toward the center of the board; two of which are underneath the memory cards. These hold in the processor heat sink and the metal thermal material to the other side of the board.

5 - Remove the SSD; don't lose the screw.

6 - Remove the Wi-Fi board that hides below the SSD; don't lose this screw either. The reason you are removing this is that the antenna lead is firmly attached to the case.

7 - The metal frame you can see around all four sides is firmly attached to the case. So, slip a pick between the metal frame and the front of the ethernet connector. Use this to gently pry the case side outward and the board upward. You may also need a second pick slid in between the metal frame and the far USB connector to keep it from catching on the metal frame. A little patience here and the board will be free of the case.

That's it. Mystery solved. Enjoy.

Monday, February 26, 2024

Software/Firmware Updates Ignorant/Annoying?

When a user installs a software update, why does the user have to answer any questions? The base/previous version is already installed and running. 

If the user has asked/agreed to an update and unless there are new options or other critical user interaction required, the software should just update itself silently.

Millions of person-hours are wasted with the user answering the same questions for every update -- over and over.

Samples of stupid questions:

Agreeing to the license (didn't the user already do that?)

Does the user really want the update - duh?

Click finish to complete the update (like there is another option).



Saturday, February 24, 2024

NPN Transistor Saturation Mode Laboratory Measurement

The WWW has a lot of information, but finding actual circuit measurement of an NPN transistor saturation mode was, well, I never found any. Hence this experiment. I chose a common 2N2222A in a TO-92 package. On the DCA Pro 75, it measured:

hFE = 265 at Ic = 5.01mA

Vbe = 0.755V at Ib = 5.00mA

VceSat = 0.013V at Ic = 5.0mA and Ib = 1.00mA

 

The testing setup is in the following diagram:

 




A good description of a PN junction is give in this video: Forward biasing a PN junction.

A good description of an NPN transistor is given in this video: NPN Transistor Working.

Now for the actual measurements of our sample 2N2222A transistor:





Tuesday, April 11, 2023

Why do so many Windows applications misuse "appdata"?

Windows applications should not store static files common to all users (even if that is just one user) in the appdata folder. 

Common static files like:

  • Executables (.exe, .dll, .jar, .bin, .js...)
  • Collections (.cab, .zip, .7z...)
  • Installation (.msi...)
  • Configuration (.ini, json...)
  • Data (ryo, .db...)
These should be stored in c:\ProgramData (there is a hint in the very name). 
Of course, you would ask why would anyone care? That is a good question. The answer is that when backups are made of the appdata folder, it is a waste of backup time and space to store these files; especially the executables which can be very large in aggregate if all the user wants is data that pertains just to them (after all, these files are in c:\Users\<userid>\...).

And if there are multiple users, then these files a mere duplicates wasting storage space.