Firefox won’t play MP4 files

I noticed after Chrome stopped working in Linux and I switched back to Firefox 71, that FF would not play a lot of videos or GIFs. This was true on some YouTube videos, all of Vimeo, and even locally opened MP4 (h264 with AAC audio, or h265, either HD or 4K) files I made. These files play fine on VLC. Apparently there is some kind of patent issue with MP4, and it would require that they pay something to the patent holder. Here is a link to the Mozilla page that alludes to this:

This may also relate to the problem I’ve seen with animated gifs, but I’m guessing.

It would have been nice for them to simply state that Firefox will not play MP4 files.


It isn’t related to plugins or adblockers. I dug around for a few hours reading various suggestions from years ago all the way up to a few months back. There were several saying “Oh, just clear your cache and cookies”. Bullshit! This has to do with FF not knowing what to do with a particular format.

I recompiled ffmpeg and a bunch of libraries, but that didn’t help Firefox. I hate that I have to guess at why the latest version of a modern browser can’t play common video types. If Mozilla would state exactly why they won’t play certain types of files on their knowledgebase, that would be helpful. Or tell us what steps to take to enable the browser to play those files. As I said, other programs on the same computer play them with no problems, that reduces the issue to Firefox.

I purged and reinstalled Firefox entirely using these steps:

sudo apt purge firefox

sudo rm -rf .mozilla

sudo rm -rf .macromedia [remove vintage Flash player stuff. May not exist.]

sudo rm -rf .adobe [remove vintage Flash player stuff. May not exist.]

cd .cache
Delete the mozilla folder

cd /etc
sudo rm -rf firefox

cd /usr/lib
sudo rm -rf firefox
sudo rm -rf firefox-addons

Reboot your computer to get rid of any temporary files.

sudo apt install firefox

Firefox still is not able to play MP4 files. Ridiculous!

Chrome won’t open in Ubuntu

UPDATE 12-27-19: The issue of Chrome not opening seems to be related to two files called “Preferences” and “Network Persistent State” (maybe just Preferences) found in the home hidden directory .config/google-chrome/Default/ If I set these two files to be owned by root and not writable by my own login, then Chrome will open, but will not remember any extensions or settings I configured the last time I used Chrome. If I set the same files (via chmod and chown) to my login and permissions to read+write, then Chrome will not open. I just see the spinner on my cursor indicating it is trying to open, but then I have to kill the process via terminal. I sent this info to the Chrome developers via a popup in Chrome when it couldn’t read my Preferences.

UPDATE: Still no real explanation for why Chrome works fine for several months and then stopped. Also, no explanation for why some of these “fixes” work once or twice and then stop. If I start with a completely new profile, it will work again for a while. This makes me think there is some setting that is being changed that breaks it, but no idea what since it works fine and then suddenly won’t open.

Well, my “fix” worked once before doing the same behavior again. I have to find the process and harshly kill it.
ps -A|grep chrome
kill -9 process number

jw@JW-PC:~$ ps -A|grep chrome
9855 ? 00:00:00 chrome
9864 ? 00:00:00 chrome
9868 ? 00:00:00 chrome
9888 ? 00:00:00 chrome
9891 ? 00:00:00 chrome
jw@JW-PC:~$ kill -9 9855

I set my environment variable “MESA_GLSL_CACHE_DISABLE=true”, based on a Debian bug site statement, and that worked one time for opening Chrome. Thereafter it reverted to not opening at all. Frustrating!
To set the environment variable type this:

Another site said to start Chrome via terminal and type
google-chrome --disable-gpu --disable-software-rasterizer

That worked a few times, but then gave the error] ContextResult::kFatalFailure: Failed to create shared context for virtualization.

So I tried various other option flags that worked for others, but no luck for me.

(Original Post)
Recently Chrome began acting up on my system, as in it simply would not open. The process was running, but it would not display. If I ran google-chrome from a terminal, I saw an error about sandboxing:] InitializeSandbox() called with multiple threads in process gpu-process

I used Firefox to go online and search for the error. I found a Debian bug site that mentioned that changing the configuration of the mesa graphic drivers could help. I was not able to find a config file for these drivers, but found that I could add the repository for the drivers and get the latest version. That fixed it for me.

Here is the site with info on adding the repository:

I went from version 19.0.8 to 19.2.1 and Chrome opened right up. Wish I’d seen this fix before blowing away my old profile…

Yanmis YF-7 two-relay timer

I bought a Yanmis YF-7 from Amazon about a month ago and am finally getting around to playing with it. It can be powered by a 9V battery and has a programmable timer for controlling two on-board relays.

The main problem I’ve found so far is that there is no documentation for it. They sent no manual with it, and an internet search yielded just a tiny amount of information from the German Amazon website, and then from competitor’s models that have similar programming. They did say that I could email them for a manual, but I don’t like giving a live email address out. I’d much prefer that they had a link for downloading a PDF manual.
Click here for a PDF of this document

So, I will post what I find here, and try to keep it updated with the latest information.

YANMIS YF-7 USER GUIDE by W. Jason Woodrow 2019

Yanmis YF-7
Part Number: Yanmisepv0txaurd
UPC: 746771544984
Description: Multifunctional Delay Relay, DC 7-30V

9V model buttons

The unit can be powered by a single 9V battery. The unit has two relays each with a red LED on the board that indicates which one is currently powered. They operate independently, and can operate simultaneously depending on programming.

When the unit is powered-on, by default it will display dashes on the LED display “- – – -” meaning all timers have run out of time.

The buttons at the bottom are K1, K2, K3, K4.

K1 held for 1 full second will enter program mode.
In Program mode, P will blink in the leftmost column. Choose which program you want, based on the number. P-##. Lowest ## is 11, highest is 48.
Settings are saved as they are made.

P: choose program from 11-18, 21-28, 31-38, 41-48 (excluding 19, 20, 29, 30, 39, 40), 32 programs total (although there are 3 that appear to be duplicates of others).

K2 increments the left digit
K3 increments the right digit
K4 decrements the right digit
Holding any of the these buttons cycles through the numbers

A timer (controls Relay 1)
B timer (often controls Relay 1)
C timer (controls Relay 2)
D timer (often controls Relay 2)

In program mode, press K1 briefly to display the A timer. See the chart below describing how the decimal affects the time. Press K1 briefly again to show B timer, etc. D timer is the last setting.

When display shows four dashes “- – – -” you have exited program mode and saved the settings. To enter Program mode again, press and hold K1 for one full second.

NOTE: In timer mode (A, b, C, d) K4 moves the location of the decimal or removes it. K2 increments all three digits, K3 decrements all three digits. Holding K2 or K3 cycles through the digits.

This part is a little confusing, and it can affect the way the other timers are interpreted by the device. If you stick to one method for all the timers, you’ll get the most consistent results.

A004. (decimal showing after last digit) is 4 minutes (Range is 1 to 999 minutes)
A004 (no decimal showing) is 4 seconds (Range is 1 to 999 seconds [16min 39sec])
A04.0 is 4 seconds (Range is 0.1 to 99.9 seconds [1min 39.9sec])
A4.00 is 4 seconds (Range is 0.01 to 9.99 seconds)

Through testing each mode, I was able to figure out if it started the timer based on power-on, trigger pulse high, trigger pulse low, or trigger steady power. A couple of modes were too odd to completely figure out.

For Triggers, I used a wire to feed from the negative power input to the two triggers (called Signals in the picture).

P-11: Trigger 1 keeps Relay 1 activated as long as trigger power remains. Same for Trigger 2 and Relay 2. Timers are not used.

P-12: Each trigger toggles the relay closed or open as many times as triggered. Timers have no function

P-13: Trigger 1 closes relay 1 for time set on timer A. Trigger 2 closes relay 2 for time set on timer C. B and D timers have no function.

P-14: appears to be the same as P-13

P-15: appears to be the same as P-13

P-16: appears to be the same as P-13

P-17: appears to be the same as P-13, except that the timer only shows “—-” (4 dashes)

P-18: Triggers inactive, Timers A & C start at power-on.

P-21: Trigger 1 runs Timer A then closes Relay 1 until power-off. (Trigger 1 can run timer again, but relay remains open until power-off).
Trigger 2 runs Timer C then closes Relay 2 until power-off.

P-22: Similar to P-21, except power to triggers have to remain on (cannot be a pulse). Timer will reset if trigger loses power.

P-23: Pulse to Trigger 1 runs Timer A then activates relay 1 until next trigger pulse which powers off relay 1 and starts timer A again. (Relay is off while timer runs, relay activates when timer reaches 0).
Pulse to Trigger 2 runs Timer C then activates Relay 2 until next trigger pulse which powers off Relay 2 and starts Timer C again.

P-24: Trigger 1 power must stay on, runs Timer A then activates relay. When Trigger 1 goes low, Timer A runs for time set on B and then closes relay. HOWEVER, see note below.

Trigger 2 power must stay on, runs Timer C then activates relay. When Trigger 2 goes low, Timer C runs for time set on D and then closes relay. HOWEVER, see note below.

HOWEVER, it also depends on how decimal is set on timers A and C.
A04.0 B07.0 C02.0 D03.0
A runs for 4 seconds, then runs for 7 seconds (Timer shows A during 2nd time)
C runs for 2 seconds, then runs for 3 seconds (Timer shows C during 2nd time)

A4.00 B07.0 C02.0 D03.0
A runs for 4 seconds, then runs for 0.7 sec, so it is like decimal was moved on B to B0.70
C runs for 2 seconds, then runs for 3 seconds (Timer shows C during 2nd time)

P-25: Toggle. Trigger 1 power must stay on, runs Timer A then activates relay. Stays activated when Trigger 1 goes low. Trigger 1 power must stay on, runs Timer A then deactivates relay.
(Same for Trigger 2 and Timer C)

P-26: Any change of state to Trigger 1 starts Timer A. If power to Trigger 1 is left on, Timer A will trigger when power is removed from Trigger 1. Or trigger can be pulsed with same effect.
Same for Trigger 2 and Timer C.

P-27: Same as P-23

P-28: Power on starts Timer A, then Timer C, Relay 2 activated, Timer A again, then Relay 1 activated. Relays stay activated until power-off. Triggers no effect. (I don’t understand this one’s purpose)

P-31: At power-on both relays activate, runs timers A, C, deactivates Relay 2, A, D, deactivates Relay 1, B, D, B, D, activates Relay 2, B, C, deactivates relay 2, B, activates Relay 1, D, A, C, A, D…. (I don’t understand the purpose of this one)

P-32: Loop. Trigger 1 power must stay on, activates Relay 1 runs Timer A, then deactivates Relay 1 while Timer B runs. Loops as long as power is on trigger.
Same for Trigger 2 and Timer C and D.

P-33: Loop. Same as P-32 BUT only needs a pulse for trigger. Next pulse to trigger cancels timers. Trigger 1 pulse activates Relay 1 runs Timer A, then deactivates Relay 1 while Timer B runs.
Same for Trigger 2 and Timer C and D.

P-34: Similar to P-31, except after activating and deactivating both timers, it stops. Triggers inactive.

P-35: Pulse to Trigger 1 starts timer A, then Relay 1 activates with Timer B, then stops until next trigger.
Same for Trigger 2 and Timer C and D.

P-36: Same as P-35, but Trigger power must remain on.

P-37: Pulse to Trigger 1 starts timer A and activates Relay 1, Timer B starts and Relay 1 deactivates, then stops until next trigger.
Same for Trigger 2 and Timer C and D.

P-38: Pulse to Trigger 1 starts timer A and activates Relay 1, Timer B starts and Relay 1 deactivates, Timer A repeats once more and activates Relay 1, then stops until next trigger.
Same for Trigger 2 and Timer C and D.

P-41: Trigger 1 goes LOW, Timer A starts and Relay 1 activates. Stops when Timer A finishes.
Same for Trigger 2, Timer C and Relay 2.

P-42: Trigger 1 goes LOW, Timer A starts. Timer B starts and Relay 1 activates. Stops when Timer B finishes.
Trigger 2 goes LOW, Timer C starts. Timer D starts and Relay 2 activates. Stops when Timer D finishes.

P-43: Same as P-42

P-44: Nothing seems to happen at all.

P-45: Power-on Relay 1 on for Timer A, then Relay 2 on for Timer B. Stops after Timer B.
Triggers not effective.

P-46: Trigger 1 HIGH, Relay 1 on for Timer A, then Relay 2 on for Timer B. Stops after Timer B.
Trigger 2 not effective.

P-47: Same as P-46.

P-48: Loop. Power-on Timer A on and Relay 1 activates, Relay 1 deactivates for Timer B. Timer C on and Relay 2 activates, Relay 2 deactivates for Timer D. Keeps doing this.

Work knives

I usually carry a knife at work as one of many tools. My last knife was a CRKT M16-12Z tanto style with serration near the handle. It served me well for many years until I used it to clean embedded moss from underneath my roof shingles. Before I realized what was happening, I had a nice fold-out butter knife. The abrasive shingles had ground away so much metal that the knife was just about useless.
knife damage

I talked to coworkers about knives they use, and two names stood out: Benchmade and Kershaw. I opted first to get a Benchmade Mini-Griptillian (blade alloy is 154CM). The lock on this knife was different than the CRKT, and the clip was oriented in the opposite direction (anchored on the butt of the handle). I carried it for about a month and it took some getting used-to having the knife in a different orientation than I had carried for years. But the blade was very sharp, and kept its edge well. It was smaller than I really liked, but had a good feeling handle. Another difference that I didn’t like was that it opened with just a thumb post, and had no index finger post.

Eventually, I found myself wanting a larger knife, and one that was oriented like my old CRKT. I looked at the Kershaw blades. I bought two, as they are far cheaper than the Benchmade. I bought a “Blur” and a “Clash” (blade alloy is Sandvik 14C28N).


I really like the shape of the Blur. It is pretty, a good size for my hand, and opens easily. The part I don’t like is that it only has a thumb post for opening. I also liked that the clip is anchored near the blade. This make drawing and opening the knife quicker and more natural for me than the other orientation.

The Clash is a similar knife, not as pretty to my eyes, but has an index finger post for opening. That makes it more natural for me, since my CRKT had both kinds of openers, and I used the index opener.

I find that the thumb posts invariably etch a hole in my pants. On my old knife, I took it to a grinder and removed about half of the thumb post on each side. I did something similar to one side of the Blur.

My ideal knife would be the Kershaw Blur with an index finger opener instead of a thumb post. I like the S30V version for the steel, but prefer a black blade.

The glass break on the butt of the Blur is a nice addition, which I wish were on the Clash. I’ve not seen anything online about retro-fitting a glass breaker.

I’ve chosen to carry the Clash, due to the opener and the orientation of the clip. The blade holds an edge well, perhaps not as well as the Benchmade which is made of a better alloy.

The assisted opening on the Kershaws is a nice feature when I’m in tight spaces, often up in a ceiling doing cabling work.

I use a small EZE LAP diamond stone to keep the edge and tip nice and sharp.

NOTE: One potentially dangerous part of the Clash is the way the blade locks with a “locking liner”. The vast majority of the time, this works very well. I was recently using the knife to clean out some fireproof foam from a pipe, and occasionally putting pressure on the BACK of the blade. Due to my grip touching the locking liner, the blade became free to close. I wasn’t injured, but it did get my attention. This kind of locking mechanism demands that the blade only be used with pressure on the sharp side until you intend to close the blade.

Old systems support

One of the facilities I support still uses Windows XP for door controls. It never has to see the Internet, so there is not much danger in that approach. However, the hardware is old. And new computers won’t necessarily be able to run XP. Even if I can migrate the OS, the hardware simply didn’t exist when XP SP3 was the rage.

So, I do what I can to keep some old IDE drives around, and a few old PCs of the type they have been using for nearly 20 years. I clean out the dust, and occasionally get called because one is acting up. I was recently working on one where I used some command-line code, and the worker commented “Did you just CODE?! Wow. I think our techs have to be great to support such ancient equipment.” I’m always surprised when techs don’t know the old DOS commands and keyboard shortcuts.

Here are just a few that I use even on all Windows systems:

chkdsk /f c: (makes the system check the current quality of the C: drive, and fix anything it thinks is wrong. This often requires a reboot since C: is in use.)

defrag c: (checks the fragmentation level of the drive and defragments it, if needed)

ipconfig /all (show the IP address, MAC, and other networking information)

Some basic ones for getting around in a command window:
dir (lists the files in the current folder, which used to be called a directory)
cd (change directory, change folder)
del (delete filename)
exit (closes the command window)

Another Windows based tool I use is Disk Cleanup. Occasionally, even after that I’m fighting for every bit of disk space I can free-up. I’ve found that the CBS log file can get to be several gigs, and so I delete that if I’m running out of room.
From the command console,
1. net stop trustedinstaller
2. net stop wuauserv
3. delete the CBS.log file (and other files in that folder)
4. net start wuauserv
5. net start trustedinstaller

Modern Windows is getting better at taking care of itself. But on these old systems, knowing some old commands can keep a facility operating and my customers happy.

On Linux systems, one of the best tools that a tech can have (and know how to use WELL) is “vi”. It is an editor that will function when all of the higher level editors will not. It can save your bacon to know it, and can give you an extra paycheck as a consultant when a company sysadmin doesn’t know it and is in a panic to fix a system he/she just hosed. Take time to learn and use it so that it is simple for you.

PTZ camera replacement

I just replaced an 18-year-old Pelco analog PTZ camera with a brand spanking new digital PTZ (Hanwha XNP-6320RH). Besides new cabling, here were a few odd issues I encountered:

1. The old camera had an RS-485 connection with 4 wires. The new camera had only 2 wires. I put both negatives together as one and both positives together and cabled it that way. I had to go into the camera settings webpage and tell it to use the settings of the old 485 controller (in this case Pelco-P protocol at 2400 baud), then it worked fine. Some new security installers like to remove the 485 controller and use a mouse instead. I find that approach cumbersome, and my customers do too. They were happy to have their controller working.

2. The DVR is an older Pelco Digital Sentry Version 1. When I set up the camera, it could not see video. I checked the camera webpage and it was working. After a reboot, I recalled that this system requires that the camera date and time match the recorder date and time. I went back to the camera settings webpage and synced with the viewing PC time, then told it to sync to a local time server (the DVR itself). Then the video appeared on the recorder.

3. The PTZ draws more power than a standard digital camera. When I first hooked it to a POE switch, it kept clicking but not turning on. It came with a POE injector, so I hooked it to that and it was happy. So I just hooked the switch to the passthru port on the injector and was good to go.

The visual difference between the old and new cameras is extreme. The old one was fuzzy and felt like a 1970s TV signal. The new one is crisp and detailed, and has great infrared night vision. Happy customers!

RANT: Motherboard Companies, What are the actual differences in your product lines?

I’m in the market to build a new PC, one that is mainly going to be stressed by editing 4K video. Other than that, the tasks are mundane. All my games are 1980s vintage, and my Internet is about 240Mbit down, so I don’t need 2gig LAN or a motherboard that cycles through colorful LED displays. I’d honestly prefer a dark silent computer.

So when I go to a company website like Asrock and I see multiple lines of motherboards, I reason that they have some kind of significant difference between the lines. I get that some are processor specific, but why do I have to dig to find out why a company chose to make so many different kinds of motherboards? Be more obvious about WHY you made “Phantom Gaming” vs “Steel Legend” vs “Taichi”. Throw me a bone, give me a clue, otherwise I spend a lot of time sorting through specs, and not really knowing what motivated them to create these separate lines, of why I should prefer one above another. And put that right up front.

So, I use a third-party site to get the best specs on what a great 4K or better video editing computer should have, and why. That site is

That way I can have my most important specs in a list, as well as some examples of boards and processors to consider. But I still have to sort through the specs on various sites.