Posts Tagged Android

Kindle Fire Picture Frame: Copying the Pictures

Being a bear of unbearable consistency, I save edited picture files with a description following the original camera-assigned sequence number:

IMG_20181108_190041 - Kindle Fire Picture Frame - Another Test Image.jpg

Yup, spaces and all.

Kindle Fire Picture Frame - Another Test Image

Kindle Fire Picture Frame – Another Test Image

I store my general-interest pix chronologically by year, in subdirectories for interesting categories, so copying all the edited (a.k.a. “interesting”) pictures to the Kindle Fire becomes a one-liner:

cd /mnt/bulkdata/Cameras
find 20?? -iname \*\ \*jpg -print0 | xargs -0 cp --parents -t /mnt/part/Pictures

The --parents parameter tells cp to recreate the directory structure holding the picture in the target directory, thereby keeping the pix neatly sorted in their places, rather than creating one heap o’ pictures.

Come to find out I’ve edited slightly over 7 k general-interest pictures in the eighteen years I’ve been using digital cameras, of maybe 27 k total pictures. Call it a 25% hit ratio; obviously I’m not nearly fussy enough.

Then there’s another 16 k project-related pictures, of which 10 k were edited into something useful. With an emphasis on utility, rather than aesthetics, a 60% hit ratio seems OK.

Which works out to half a dozen pictures a day, every day, for eighteen years. I loves me some good digital camera action!

Leave a comment

Kindle Fire Picture Frame: Side Block

A steel frame that Came With The House™ emerged from a hidden corner and, instants before tossing it in the recycle heap, I realized it had excellent upcycling potential:

Kindle Fire Picture Frame - Test Run

Kindle Fire Picture Frame – Test Run

Stipulated: I need better pictures for not-so-techie audiences.

Anyhow, my long-disused Kindle Fire fits perfectly into the welded-on clips, with just enough room for a right-angle USB cable, and Photo Frame Slideshow Premium does exactly what’s necessary to show pictures from internal storage with no network connection.

All I needed was a small block holding the Kindle against the far side of the frame:

Kindle Frame - side blocks

Kindle Frame – side blocks

A strip of double-stick carpet tape holds the block onto the frame. To extract the Kindle, should the need arise, slide it upward to clear the bottom clips, rotate it rearward, and out it comes.

Getting a good block required three tries, because the basement has cooled off enough to trigger Marlin’s Thermal Runaway protection for the M2’s platform heater. A test fit after the first failure showed the long leg was 1 mm too wide and, after the second failure, I reduced the fan threshold to 15 s and the minimum layer time to 5 s, producing the third block without incident.

The platform heater runs at 40 V and I considered bumping it to 43 V for a 15% power boost, but it has no trouble keeping up when the fan isn’t blowing chilly basement air across its surface.

The OpenSCAD source code, such as it is, doesn’t deserve its own GitHub Gist:

// Block to hold Kindle in a picture frame mount
// Ed Nisley - KE4ZNU
// November 2018

Protrusion = 0.1;

difference() {

    cube([18-4 + Protrusion,44-10 + Protrusion,10 + 2*Protrusion]);


, ,


Let the Dead Past Bury Its Dead

My old Gen 1 Kindle Fire hasn’t seen much action lately, so I figured maybe it could end its days by becoming a slide show / picture frame. While fiddling around, I tried to fire up the Amazon Shopping app:

Amazon App Unsupported on Amazon Gen 1 Kindle

Amazon App Unsupported on Amazon Gen 1 Kindle

Clicking the big orange button fired up Amazon’s Silk browser, which promptly crashed.

Some days, the punch line writes itself …

Leave a comment

Power Over Audio

An obsolete Intuit / Roam Data credit card reader emerged from the heap:

Intuit Roam Data Reader

Intuit Roam Data Reader

“Turn up the volume” suggestes where the power comes from:

Intuit Roam Data Reader - plug wiring

Intuit Roam Data Reader – plug wiring

They drive a LOUD, probably square-ish, audio signal through both “earphone”channels, rectify and regulate the output, and have plenty of power for the reader. The card data returns through the “mic” as another audio signal; I assume they choose an encoding well-suited for a dab of DSP decoding.

Nowadays, of course, 3.5 mm jacks are obsolete, audio data travels by Bluetooth, and you must keep a myriad of batteries charged at all times.


Mid-Hudson Bridge: Evening

Seen from the Walkway Over the Hudson during a Moonwalk:

Mid-Hudson Bridge - Moonwalk

Mid-Hudson Bridge – Moonwalk

Taken with the Pixel XL braced on the railing. It has a good camera, but good low-light photography requires bigger pixels, more lens, and less compression.

The bright white block just to the right of the left tower comes from construction lighting in the new Vassar hospital building.


Google Pixel vs. USB Mounting

For reasons undoubtedly making sense at the time, the Google Pixel (and, most likely, current Android devices) don’t support the USB Mass Storage protocol. A bit of poking around suggests the jmtpfs utility supplies the other end of the Pixel’s Media Transfer Protocol and the process goes a little something like this:

  • Once upon a time, create a mountpoint: mkdir /mnt/pixel
  • Unlock the phone
  • Plug in the USB cable
  • Pull down the top menu, tap USB charging this device
  • Select Transfer Files
  • sudo jmtpfs /mnt/pixel -o allow_other,fsname="Pixel"

The allow_other parameter sets the directory / file permissions so ordinary users can access the files. The fsname is just for pretty.

The Pixel’s storage then appears as the awkwardly named /mnt/pixel/Internal\ shared\ storage/ directory.

Despite being somewhat Linuxy under the hood, the mapped storage doesn’t support the usual filesystem attributes, so don’t try to transfer them with, say, rsync -a:

rsync -rhu --progress /mnt/music/Music\ for\ Programming /mnt/pixel/Internal\ shared\ storage/Music/

When you’re done: sudo umount /mnt/pixel

This may not be a win over bankshotting off Dropbox or Google Drive, except for sensitive bits like private keys and suchlike.

Thunar apparently knows how to detect and mount mtp devices automagically and I suppose GUI-fied drag-n-drop works as you’d expect.

Leave a comment

Monthly Image: Google Pixel XL HDR at Wappingers Falls Bridge

We walked over the bridge in Wappingers Falls on our way to a play:

Wappingers Falls Bridge - Google 3D Overhead - 2017-09-22

Wappingers Falls Bridge – Google 3D Overhead – 2017-09-22

As always, we paused near the center to admire the view (clicky for more dots):

Wappingers Falls Bridge - Pixel XL HDR - 2017-09-22

Wappingers Falls Bridge – Pixel XL HDR – 2017-09-22

That’s from the PixelXL, braced on the bridge wall, facing downstream toward the Hudson River.

A dot-for-dot crop of the penstock, showing off the RGB LED garland:

Wappingers Falls Bridge - Pixel XL HDR - Penstock crop - 2017-09-22

Wappingers Falls Bridge – Pixel XL HDR – Penstock crop – 2017-09-22

Contrary to what you might think, the gorge underfoot appeared almost black to the eye, particularly against the glare from the floodlights, so the HDR works very well:

Wappingers Falls Bridge - Pixel XL HDR - Gorge crop - 2017-09-22

Wappingers Falls Bridge – Pixel XL HDR – Gorge crop – 2017-09-22

The JPG compression on those images doesn’t materially affect the results; the original image has most of the artifacts.

The EXIF information:

Wappingers Falls Bridge - Pixel XL HDR - Photograph EXIF - 2017-09-22

Wappingers Falls Bridge – Pixel XL HDR – Photograph EXIF – 2017-09-22

The “1/10 s shutter speed” probably has very little to do with any physical event. AFAICT, the Pixel camera records 30 images/s for the on-screen preview, then uses various images before-and-after the shutter click for motion compensation and HDR processing. If so, “1/10 s” corresponds to three images.

I had the Pixel location tracking in “battery saving” mode with the GPS turned off:

Wappingers Falls Bridge - Pixel XL HDR - GPS EXIF - 2017-09-22

Wappingers Falls Bridge – Pixel XL HDR – GPS EXIF – 2017-09-22

In reality, the bridge is about 90 feet above sea level. The “GPS Time Stamp” and, presumably, the date, use UTC. We’re in UTC-4, with Daylight Saving Time in full effect, so we were comfortably early for the 8 PM show.

The camera doesn’t produce DSLR-with-big-glass quality images, but it fits in my pocket and it’s better than my old Canon SX-230HS for most purposes.