Eken H9/H9R/H9S Action Camera WiFi Connection

You may own an Eken H9 series action camera. You may, like myself, have gotten a few different lenses for it to modify it for your own, non-fisheye, use.

But how will you connect to it either through a wire or wireless?

All you need is an application (VLC will do) that can read in an RTSP stream (read more on those over at Wikipedia) and punt it to wherever you’d like.

Be aware that you won’t be streaming out at full resolution (yet? maybe impossible?). While it does work the Eken can only output “standard def” 480p with the following network connection address.

I’m still looking into changing the URL around for different streams. Unfortunately the Eken flat out crashes if you connect to an invalid URL. That’s not exactly the best handling on error conditions there folks!

NMAP reports the following on ports 1 through 1000 (TCP) when it’s not active:
Nmap scan report for
Host is up (0.0084s latency).
Not shown: 998 closed ports
21/tcp open ftp
554/tcp open rtsp
And for UDP:
Nmap scan report for
Host is up (0.0086s latency).
Not shown: 999 closed ports
67/udp open|filtered dhcps
MAC Address: xx:xx:xx:xx:xx:xx (Unknown)
And the connection address is:


  • Q – might be a quality setting? While I didn’t notice a difference this would probably require objective testing
  • W – is width (this doesn’t appear to change the cameras output; just the size displayed rendering it extremely dithered)
  • H – is height (this doesn’t appear to change the cameras output; just the size displayed rendering it extremely dithered)
  • BR – No idea as of yet

It also runs an FTP server on the address sharing out all the contents of your Eken to anything that connects up to it. Poor error handling and poor security come prepackaged on this unit.

But the Eken is at the lowest price point you’re likely to find. And the quality is in the cheap and cheerful camp rather than total crap. At the 40~50 USD price point I like it!

Other notes on the Eken H9 series:
  • With the exception of the Plus they’re all interpolating up to 4K; the native hardware only handles up to 1080P 60fps well in my experience
  • Eken’s H9 is running a wifi network at 54mbps (20mhz, no HT). That’d suggest 802.11g standards.
  • The camera has a built in DHCP service in addition to RTSP and FTP servers
  • Plug it in via USB without a memory card and it will act as a low-def video streaming device
  • Plugging in the Eken’s USB cable seems to power it while streaming
  • I found that my Eken seemed to have a heating issue; It may get a modification to dissipate the heat more effectively
  • The WiFi RTSP with the above connection URL exports Motion JPEG (MJPG)
  • The user is “331” and the password is “wificam” for the ftp service
A note on VLC:
  • Tune down the network caching option under the network connection to reduce latency
Sources not listed above:

http://hackeken.blogspot.com/2017/01/reverse-engineering-eken-android-app.html#more: Listed the URL for connection as sniffed from WireShark. Hackeken also lists the username and password which are passed in clear-text.

Smoothieware Update for MKS SBase v1.3

While updating my MKS SBase v1.3 to the latest smoothieware software I ran into a bit of a snag. Not a snag you’d find in the actual (recent) Smoothieboards, mind, but a snag that would only occur with the MKS SBase.

As it turns out they’re shipping with a 2014 copy of the Smoothieware firmware. Even as late as 2016! Because of this it won’t read a Fat32 formatted SDcard. Instead you’ll need to format the SDcard with Fat16 for the updated and then can re-format it with Fat32 for storage.

So that’s it! Should you have a MKS SBase board and are having an issue try Fat16 formatting.

Note that Smoothieboards are available from their maintainers. If you purchase a board from them you’ll likely not have these issues. And the hardware is a bit more likely to be in spec!

And you may want to know what this Smoothieboard thing is. Thomas Sanladerer has you covered with one of his videos, better than I would with a few paragraphs of words, on YouTube.

Moving around LVM2 Partitions (and Changing their Size)

Recently I ran into an issue where the size of an existing disk images LVM2 partition didn’t fit. The latest hardware from our vendor didn’t contain a large enough SSD memory drive! Since I didn’t want to re-create the entire image I turned to the Internet for help.

My issues with pre-created images aren’t infrequent. While it’s not as much of a problem currently as it was in the past LVM2 does add a bit of a wrinkle (being a relatively new container format). Between G4L and GParted they solve most issues, just not this one.

While there were quite a few resources available, AskUbuntu was the most concise. In this post in particular. If you look down the second answer by Gilles sorts both problems nicely.

Max6675 Housing (3D Printed) in Translucent Green PLA

While working on a temperature controlled oven for drying out desiccant and plastics I needed a housing for the Max6675 thermocouple controller. I also didn’t want to adapt something to fit. Being in possession of a 3D printer I figured that was just the solution to the problem.

Fortunately someone over on Thingiverse (bradford) had created a design that contained the measurements. A small bit of tweaking later the project was done! Changes to the design account for larger solder joints and make room for jumper cables.

You can find my revamp of the original design along with some pictures of it in action on Thingiverse.

Translucent green PLA was used for the print itself. Layer height was set to .2mm with infill at 15%. Infill type was set to 3D Cube style. Combining those settings in Slic3r Prusa Edition created a durable part.

Fixing WebCollage Screensaver Headers.pm “Use of uninitialized value $vals” error

Tired of getting errors scrolling down the screen in the WebCollage Linux screensaver? So was I.

WebCollage (here’s the link to the .deb on Ubuntu), for a bit of background, is a nice Xorg screensaver for Linux that displays a random collage of images fetched from various search systems on the Internet and popped up in an array as a screensaver. It gives you a weird and occasionally surreal collage that I always find interesting.

Reading the error stating an unset variable “$vals” was to blame for the for thousandth time I decided to take action. The perl file Headers.pm, located somewhere on the file system, was calling an array that didn’t fetch anything leading to the following.

As it turns out, there is an unset variable “$vals” on line 264 and 268 of the Perl file Headers.pm (/usr/share/perl5/HTTP/Headers.pm on my Debian system). There are multiple ways to fix this error. I’m just going to check to see if it’s defined before referencing. Here’s my changes to line 264 on:

#if (index($vals, "\n") >= 0 ) {
if (defined $vals) {
$vals = _process_newline($vals, $endl);
if (defined $vals){
push @result, $field . ': ' . $vals;

Creating Mr. Beams Networked Lights Hacks

Mr. Beams produces an inexpensive line of autonomous outdoor lights. Coming in at 25$ each and 47$ or so for a pair they’re decent bang for your lighting buck.

But what if you’re not satisfied with the product out of the box? What if you’d like to completely void any warranty provided with the product? Possibly break it horribly? Continue reading Creating Mr. Beams Networked Lights Hacks

3D Printing: 3D Printer Build Plate Leveling

3D printers require a level build plate. We’re taking a look at how you can level your Replicator, CTC, Flashforge, or other Makerbot Replicator style printer build plate

Bill of Materials for this Build:

  • Finger Guage (or sheet of paper)
  • (Digital) Dial Gauge
  • 3D Printed Jig
  • Small Magnets (optional)
  • Hot Glue (to adhere magnets)

Some newer extruders such as the Kossel style Deltamaker cleverly level the head instead of the plate, which proves a bit simpler. They’ve got there own weaknesses, of course, but a level plate generally isn’t one. For the rest of us we have to put up with leveling springs in three or four locations needing to be tightened to spec periodically.

As with any procedure you can severely damage yourself or your equipment. By reading this article you acknowledge that the author, this publication, and any other entity have no responsibility for damage or injury. Take all necessary safety precautions and make sure that any procedure will not cause damage or injury before going through with it.

So what’s an easy way to level the build plate? You can fiddle around with a finger gauge and manually level it repeatedly to .102mm or .004 inches (about the thickness of a sheet of paper) on all the points hoping that it’s dragging just right every time and you’re not getting a variance.

Pittsburg branded digital gauge from Harbor Freight
Pittsburgh digital depth gauge from Harbor Freight

Or you can pony up 15$(USD) or so and get a digital depth gauge (ours was from Harbor Freight, pictured right). There are also tire tread depth gauges with the proper resolution for the job available in the 5$ range. We went with the classier dial style digital gauge jig as seen in the pictures. Link to the required jig on Thingiverse: (STL Files at Thingiverse)

You may want magnets as well. Gluing them in place on the print-out provides a bit more staying power to your jig. Less moving about while you’re setting the screws on your plate is definitely a plus but the design will clip on if you have trouble finding magnets.

Digital meter installed in a red PLA jig

Digital depth guage installed in 3D printed jig with magnets

In addition to magnets re-sizing the inner diameter of the print out’s pass-through hole to the gauge might be necessary if there’s a variation to it on your meter. A bit of tape or smudge of dried adhesive on the inside of the opening can achieve the same goal if you’re not keen to pre-measure everything and alter the 3D drawings.

How does it all work? You’re still going to need your finger gauge (or paper) to level a single corner properly. Being careful not to hit the bed with your print head position the print head properly near one of the leveling screws and get it to the correct distance from the print bed. We accomplished this by moving the print head out of the way, manually moving the Z axis all the way to the top, then moving the print head near the screw with the built in jog function.

How to check the depth of clearance on a printhead with a feeler guage

A finger guage balances under the print head to check the depth of clearance

While the build plate is positioned correctly next to the screw go ahead and level the build plate. On most printers this is accomplished by tightening or loosening the screw until your finger gauge (or paper) drags appropriately. Your 3D printer may differ.

Once that screw is tightened to the proper tension go ahead and move your print head(s) off to the side using the jog feature of the printer. With the printhead moved to the side place your jig on the printers carriage rods as pictured.

A 3D printer jig showing zero positioned over a leveling point on a CTC 3D printer
3D printer leveling jig positioned properly on a single level point

Zero the digital depth gauge by pressing “Zero” (or your equivalent) once it is mounted securely in place. With the gauge reading zero move your Y and Z axis around until the meter is roughly next to each one of the tensioning screws. Then add or remove tension with the screw until the gauge reads zero for each of the positions.

You’ll want to repeat your check until all four points read near zero. It generally takes a few passes.

That should be it! If that all worked for your 3D printer you should now have a leveled build plate.

How To: Run a Benchmark on Linux

So you’re wondering how fast that new Linux desktop you’ve built is.  But you’re not sure how to run a quick benchmark and find out.

Maybe you’re not familiar with the programs you should use. Maybe you’ve never actually run a benchmark before!  In any case we’ll go over a few basic benchmark tools that’ll have you comparing real world and synthetic performance numbers in no time.

picture of hardinfo running on Ubuntu
hardinfo System Profiler and Benchmark for Linux displaying a blowfish benchmark screen

hardinfo is fairly straight forward tool to start with (see the debian package information here) .  On debian or Ubuntu Linux it might already be installed. In Ubuntu it will show up as “System profiler and benchmark” in your menuing interface.  If not it can be installed with the command “sudo apt-get install hardinfo” or searched for in your favorite software manager.

This all-in-one information tool gives you easy access to systems hardware list from the proc and sys psudo-filesystems (which are an article in and of themselves) and a variety of benchmark tools.  Unfortunately you can no longer auto-sync with the hardinfo benchmarks database with the closure of BerliOS.  But it remains both a good one-page source of system information and a tool for getting a couple of quick number crunching benchmarks run.

GTKPerf showing multicolored lines to test a systems speed displaying them.
GTKPerf running it’s drawing area test.

GTKperf is a small test suite that shows you how fast your system handles creating graphics, rendering lines, and scrolling through drop-downs with the GTK user interface speed. To install it search for gtkperf in your package installer or type “sudo apt-get install gtkperf” in a terminal.

From it’s creator’s web site: “There exist other performance tools but none to measure GTK+ UI speed. With this tool it can be done easily and repeated (the) same way multiple times“.  And that’s exactly what it does.

While it’s not going to give you an idea of how massive number crunching will go it should give you some measure of how responsive your desktop will be.  Which is about as practical as benchmarks can get.

To actually run the default test set in GTKperf click on “Start” under the “i” tab.

Gnome Disks window in the background with a benchmark of an SDD in the foreground.
Gnome Disks showing a SDD benchmark.

gnome-disks is another application that has benchmarking as a small subset of it’s capabilities.  To install gnome-disks on Debian or Ubuntu search for gnome-disk-utility in your package manager or type “sudo apt-get install gnome-disk-utility“.

Seasoned Linux veterans will remember this application as the nearly impossible to remember palimpsest software.  The latest interface isn’t quite as robust, but it still has hard drive speed benchmarking as part of it’s tool set.  It will also provide you with information about your hard drives SMART status and access to many of the partition management utilities from a clean graphical interface.

On a drive with partitions it’s not recommended to run a write benchmark unless the data is backed up or you don’t mind the possibility of something going wrong and it being destroyed.  These benchmarks are better used for drives that don’t currently have data on them that you’re’ getting an initial speed run of and for that gnome-disks gives you a very nice graph of the drive’s speed and latency for your test criteria.

To actually reach the benchmark options use the gear symbol when you’ve selected the appropriate drive.  Again, this is a tool best used for drives without any data and requires root access to run.





Cleaning your 3D Printer’s Feed Drive Gear

While 3D printing there are few things worse than getting half way through a print and realizing that the filament is getting stuck in the drive gear.  Which happens when you’re running cold filament on a hard metal gear with relatively sharp teeth.

Which leads to the need to clean out the drive gear!  Keeping the drive gear clean can help the filament keep flowing in the right direction and at the right speed leaving you with less errors on your prints and better layer adhesion.

The feed mechanism on the Replicator style 3D printers from Makerbot and the various open-source manufacturers consist of a drive gear applying pressure the the filament and a roller to help press the filament against the gear.  We’re going to take a look at what parts are involved on the CTC printer and how to remove and clean them.

Brass cleaning brush
Brass cleaning brush used on a 3D printers feed drive to clean plastic out.

First I unloaded the filament and waited until the printer was cool.  Not waiting for the printer to cool down before removing the various hot-end and cooling parts can result in being injured; so I’m not going to do that.

Warning: Do not force any parts together or apart.  The process notes here are based on a specific model of 3D printer and may not apply to yours.  Make sure you take all necessary precautions and refer to your manufacturer with any questions.

Once the printer is back at room temperature I needed to remove the fan through-bolts (two in the case of the CTC pictured).  I was then able to unscrew the two screws holding together our filament feed guide components.  Being careful not to loose any of them during the process.

With the feed guide removed the remaining part on this printer is a feed gear.  In the case of the CTC it’s held on by a set screw that needs to be loosened to remove the gear.  When I loosen up the set screw it comes forward and off the motor.


And it’s full of ABS gunking up it’s gear!

CTC Replicator Drive gear post cleanup
New clean CTC printer feed drive

What I’m going to do to clear that out is get a set of brushes.  Since the gear in question is a hardened metal I’ll use a soft plastic brush and a harder brass brush.  I’ll then pick out any remaining bits of plastic with a small screwdriver.

Once that’s done the feed assembly gets rebuilt in the reverse order I took it apart and it’s back to extruding 3D prints!

3D Printing: Replicator Windows Hinges

Today’s Makerbot enhancement is a window hinge from Thingiverse complete with custom cut acrylic windows. You’ll have noticed them in the previous post’s CTC Dual Extruder 3D printer.

CTC Replicator clone with hinges and window
Makerbot Replicator 1 clone by CTC with acrylic window and hinges.

These clips seem to work well even with the under-sizing you’ll get on converting from metric to SAE sizes. What you’re seeing there is the combination of these clips and this acrylic window cut-out.

Since we’re going from Metric to the available parts in the United States (SAE) we’ll have to do some quick conversions and allow for overage. Or re-work the models which for some folks might make a fun and quick challenge. In this case it was more work than we were looking for.

On the hinge side there’s a call for 3mm metal rod. So we didn’t have to alter the original models for the hinges we went with the nearest larger size available at Home Depot, a 1/8th rod. To do that you’ll have to drill out the hinge to re-guage it to the larger size.

Close up of CTC Replicator clone acrylic window hinge.
Close up of CTC Replicator clone acrylic window hinge.

Since 3mm acrylic is equally impossible to find we went with 1/16th acrylic for the windows.  What you’re seeing holding the window in is medium strength double sided foam tape.  It’s a bit loose but seems to hold well enough.

The acrylic windows were cut out on an Epilog laser cutter as seen in the picture. You could also cut and snap them if you’re careful or possible route them with a saw. Just mind that a reciprocating saw may bind up making it dangerous.

One other problem we ran into in creating the windows for the case was a slight design difference between the CTC 3D printer and the Makerbot Replicator on which it’s based.  They appear to have cut the wood panels slightly (as in a fraction of a millimeter) too small resulting in some overlap of the acrylic panels.

Window overlap highlighted in black marker.
Image showing window overlap on the CTC Replicator clone.  It’s the area highlighted in black sharpie.

You can prevent that from being an issue with some careful measuring and reworking the laser cutter image (if laser cutting) or simply cutting it to your exact specifications. In our case we took the panels down to the combination belt and wheel sander and took off the extra material on the flat sanding disc.250