Advertisements

Ed

By turns: tinker, engineer, husband, author, amateur raconteur, recumbent cyclist, father, ham radio geek. So many projects, so little time!

Homepage: http://softsolder.com

Anker MicroSD Card Adapter Speeds

According to its description, the Anker USB 3.0 card reader can handle both a MicroSD and a standard SD card at once:

Simultaneously read and write on two cards to save yourself the effort of constant unplugging and re-plugging.

Which looks like this:

Anker USB Reader - dual card
Anker USB Reader – dual card

After you get used to inserting the SD card downside-up, it fits perfectly. The Kapton tape on the MicroSD card eases extraction from the still finger-dent-less M20 camera mount on the back of my Tour Easy ‘bent.

Plugged into a USB 3.0 port, my file extractor script chugs along at 25.9 MB/s, taking about 18 minutes to transfer 28 GB of video data.

Splurging another eleven bucks for a second reader produces this setup:

Anker USB Reader - single card
Anker USB Reader – single card

After plugging both readers into adjacent USB 3.0 ports, the script transfers files at 46.6 MB/s and copies 28 GB in 10 minutes.

So, yes, the reader can handle two cards at once, but at half the speed.

Not life-changing, but it shows why I like measurements so much …

Advertisements

Leave a comment

Multiprocess Book-on-CD Ripping

The most recent iteration of ripping a book-on-CD to bits suitable for a small MP3 player begins by defining the metadata:

author="Whoever Wrote It"
title="Whatever It May Be About"

Set up a suitable directory for the MP3 files, with a subdirectory for the WAV files direct from the CD:

mkdir "$author - $title"
cd "$author - $title"
mkdir waves

Then unleash cdparanoia on each disk, but with its error checking dialed back to a minimum because most errors don’t produce much audible damage:

d=01 ; cdparanoia -v -Y --never-skip=1 -B "1-" waves/D$d.wav ; eject cdrom

In some cases, however, a nasty gouge (the previous owners being careless, alas) can jam cdparanoia midway through a track, so I fetch all the remaining tracks:

d=10 ; cdparanoia -v -Y --never-skip=1 -B "6-" waves/D$d.wav

Sometimes re-cleaning the disc and re-reading the offending track produces a better outcome:

d=10 ; cdparanoia -v -Y --never-skip=1 -B "5-5" waves/D$d.wav

With all the WAV files collected, I now know how to unleash multiple lame conversions for all the tracks on each disc:

for d in {01..12} ; do for t in {01..19} ; do if [[ -f waves/track$t.D$d.wav ]] ; then lame --silent --preset tape --tt "D${d}:T${t}" --ta "$author" --tl "$title" --tn $t --tg "Audio Book" --add-id3v2 waves/track${t}.D${d}.wav D${d}-T${t}.mp3  & fi ; done ; wait ; done

The disc and track ranges correspond to notes written on paper while ripping the CDs, there being no automagic way to collect the information.

That may be easier to read with the control structures spread out:

for d in {01..12}
 do for t in {01..19}
  do if [[ -f waves/track$t.D$d.wav ]]
   then
    lame --silent --preset tape --tt "D${d}:T${t}" --ta "$author" --tl "$title" --tn $t --tg "Audio Book" --add-id3v2 waves/track${t}.D${d}.wav D${d}-T${t}.mp3  &
   fi
  done
 wait
done

Affixing an ampersand (&) to the lame command drops it into the background, where it runs as CPU time becomes available. The wait after the first loop stalls until all of the lame instances for each CD finish.

The kernel scheduler manages to keep the GUI responsive while a four-core CPU makes short work of the entire CD.

When it’s all done, transfer the MP3 files to the player:

cd ..
sudo mount -o uid=ed /dev/sde1 /mnt/part
rsync -vrtu --progress --exclude="waves" "$author - $title"  /mnt/part/Music
sync
sudo umount /mnt/part

Fetching commands from history eliminates the need to remember all that, but now it’s written down where I can find it for the next desktop box.

Life is good!

Leave a comment

Money For Nothing: Bitcoin Blackmail

The spam filters on my email account snagged a message with an impressive subject:

Be sure to read this message! Your personal data is threatened!

The sender used my very own email address, sending the message from a server with a Mumbai IP address:

Hello!
As you may have noticed, I sent you an email from your account.
This means that I have full access to your device.
I’ve been watching you for a few months now.
The fact is that you were infected with malware through an adult site that you visited.
If you are not familiar with this, I will explain.
Trojan Virus gives me full access and control over a computer or other device.
This means that I can see everything on your screen, turn on the camera and microphone, but you do not know about it.
I also have access to all your contacts and all your correspondence.
Why your antivirus did not detect malware?
Answer: My malware uses the driver, I update its signatures every 4 hours so that your antivirus is silent.
I made a video showing how you satisfy yourself in the left half of the screen, and in the right half you see the video that you watched.
With one click of the mouse, I can send this video to all your emails and contacts on social networks.
I can also post access to all your e-mail correspondence and messengers that you use.
If you want to prevent this, transfer the amount of $796 to my bitcoin address (if you do not know how to do this, write to Google: “Buy Bitcoin”).
My bitcoin address (BTC Wallet) is: 14tfS3 << redacted >> WH6Y
After receiving the payment, I will delete the video and you will never hear me again.
I give you 50 hours (more than 2 days) to pay.
I have a notice reading this letter, and the timer will work when you see this letter.
Filing a complaint somewhere does not make sense because this email cannot be tracked like my bitcoin address.
I do not make any mistakes.
If I find that you have shared this message with someone else, the video will be immediately distributed.
Best regards!

The threat uses Nigerian-scam grade English, evidently targeted at folks with both a guilty conscience and a tenuous grasp on how email works. I thought those same folks would have enormous difficulty converting dollars into Bitcoin.

However, feeding the wallet ID into a Block Explorer shows three transactions over the last two days, with the account now standing at 0.43069539 BTC = US$2269.44. I have no way of knowing how many emails went out, but obviously three people had sufficiently guilty consciences to (figure out how to) make a Bitcoin transaction.

I’m sure this has something to do with my recent IP camera adventures

Update: The ransom payments tapered off after five days.

Bitcoin Scam - Total
Bitcoin Scam – Total

I don’t know how many different scams came from the same source, but $6700 (at today’s market rate) says this campaign paid better than most legal occupations outside the fintech sector.

10 Comments

Wyze V2 Camera: Tear-In

One of my Wyze V2 cameras either arrived with dead IR hardware or failed early on in its tenure here, but it simply didn’t work in night-vision mode: the IR LEDs didn’t turn on and the IR-cut filter didn’t move. Neither the Official Wyze App nor the Xiaomi-Dafang Hacks firmware had any effect, so I expected a (possibly simple) hardware problem.

The first hint of trouble was finding the case had only one of the two screws securing its bottom lid, with the missing screw having never been installed. Removing the single screw and prying a bit popped the lid, revealing the innards:

Wyze V2 - interior bottom view
Wyze V2 – interior bottom view

The rear panel (on the right) comes off after abusing the snaps holding it to the main case:

Wyze V2 - rear panel snaps
Wyze V2 – rear panel snaps

That’s best done with a small, designated Prydriver, rather than a screwdriver to which you have a deep emotional attachment.

The corresponding part of the main body shows less abuse:

Wyze V2 - case snaps - WiFi antenna
Wyze V2 – case snaps – WiFi antenna

The black patch is the WiFi antenna, which you must unplug from the top board before going much further.

The small blue wedge below the antenna gave me hope I’d found the root of the IR problem:

Wyze V2 - mis-closed ribbon cable
Wyze V2 – mis-closed ribbon cable

Everybody has trouble with those delicate ribbon cable socket clamps!

While I had the case open, I extracted everything and looked it over:

Wyze V2 - front PCB - LED pin soldering
Wyze V2 – front PCB – LED pin soldering

The IR LED soldering left a bit to be desired, so I touched up those joints and washed off most of the flux.

Alas, the IR hardware still didn’t work with everything stuffed back in the case. There are worse things than having a small daylight-only IP camera, though.

So it goes …

5 Comments

Desk Lamp Conversion: Round 2

A bit of rummaging produced a desk lamp arm, minus whatever lamp it originally held, ready to hold the second photo lamp, after a bit of epoxy on one locking knob:

Lamp arm clamp screw rework
Lamp arm clamp screw rework

The flanged nut will seat on the wrecked part of the knob, with the epoxy holding it in place and somewhat reinforcing the perimeter. I’m not sure this will last forever, but it’ll be a start.

Printing a second cold shoe, though, worked perfectly, and everything fit:

Photo Lamp - right arm installed
Photo Lamp – right arm installed

I love it when a plan comes together!

,

Leave a comment

Wyze V2 Cameras: Xiaomi-Dafang Hacks, Round 2

Another attempt at replacing the Wyze camera firmware went much more smoothly, producing a pair of small cameras with better network manners:

Wyze Camera hacks - Cam 1 overhead workbench
Wyze Camera hacks – Cam 1 overhead workbench

That’s a VLC screen capture from the RTSP stream; obviously, I must up my clutter control game.

I formatted a 32 GB MicroSD card with a 512 MB partition, which may not be strictly necessary, copied the MicroSD CFW bootloader (as demo.bin, sheesh), and it installed without drama.

I resized the partition to 32 GB, installed the firmware (per the FAQ) into the root directory, tweaked the configuration files to match my situation, popped it in the camera, plugged the power cable, and It Just Worked™.

Herewith, a checklist of config directory files requiring tweakage:

  • wpa_supplicant – WiFi SSID and password
  • timezone.conf – America/New_York for us
  • osd.conf – can be tweaked through the Web interface
  • staticip.conf – 192.168.1.11x, as you like
  • resolve.confpihole or router IP, as needed
  • defaultgw.conf – router IP
  • rtspserver.conf – different ports for additional cameras

It would be possible to have the pihole’s DHCP server assign a fixed IP address to each camera, based on its MAC address, but this way the camera knows who it is right from the start and what it’s supposed to be doing.

The router isn’t bright enough to route different port numbers on its Internet side to different LAN IP addresses with the same port address, so each camera must stream from a different port number. I don’t plan many world-available video streams, but a friend does enjoy watching the birds during feeder season.

With the RTSP stream up & running, I flashed the U-Boot bootloader (again, minus drama) and tweaked its uEnv.txt configuration file:

  • Change the memory layout to allow 1920×1080 video
  • ethaddr – set to match hardware MAC address
  • gateway – router IP
  • ipaddr – match the staticip.conf value
  • serverip – router IP (unclear what this does)

The cameras now produce no objectionable network activity, dramatically down from the Wyze firmware’s desperate attempts to contact various servers, every five minutes, around the clock. I have no way of tracking connections made with direct dotted-quad IP addresses, rather than through the pihole, but … this is a distinct improvement.

11 Comments

Sony NP-FM50 Battery Disassembly

Having won an eBay action for a known-dead Sony DSC-F717 at $0.99 (plus $15 shipping, the seller being no fool), I now have a possibly salvageable camera, a Genuine Sony AC supply, and two more NP-FM50 batteries for about the price of any one of the components.

One battery arrived stone-cold dead, suggesting the camera had been put away with the battery installed for a very long time and they died companionably. The camera still charges a (good) battery, even though it doesn’t turn on, and perusing the schematics suggests checking the power switch, because it’s always the switch contacts. That’s for another day, though.

For the record, the battery status:

NP-FM50 - 2019-03-30
NP-FM50 – 2019-03-30

The red and green traces come from the two batteries I’ve been cycling through the camera since, um, 2003, so they’re getting on in years and correspondingly low in capacity.

The fourth battery (2019 D, the date showing when it arrived, not its manufacturing date) went from “fully charged” to “dead” in about three seconds with a 500 mA load, producing the nearly invisible purple trace dropping straight down along the Y axis.

Sawing the dead battery case around its welded joint at a depth of 0.75 mm, then prying with a small chisel, exposed the contents without histrionics:

Sony NP-FM50 battery - cell label
Sony NP-FM50 battery – cell label

Now, there’s a name to conjure with. Turns out Sony sold off its Fukushima battery business a while back, so these must be collectibles. Who knew?

The lower cell is lifeless, the upper cell may still have some capacity. Three pairs of 18500 lithium cells are on their way, in the expectation of rebuilding the weakest packs.

After desoldering the battery tab on the right from the PCB, it occurred to me I needed pictures:

Sony NP-FM50 battery - PCB exposed
Sony NP-FM50 battery – PCB exposed

Yeah, that’s a nasty melted spot on the case, due to inept solder-wickage.

Unsoldering the three tabs closest to the case releases the cells + PCB from confinement:

Sony NP-FM50 battery - PCB overview
Sony NP-FM50 battery – PCB overview

I’m still bemused by battery packs with a microcontroller, even though all lithium packs require serious charge controllers. At least this is an Atmel 8-bitter, rather than 32-bit ARM hotness with, yo, WiFi.

The cells have shaped tabs which will require some gimmicking to reproduce:

Sony NP-FM50 battery - cell tabs
Sony NP-FM50 battery – cell tabs

Now, if only I could reboot the camera …

,

3 Comments