Gnome Desktop Stop Start and access TTY’s

In Ubuntu you may wish to stop or start the Gnome desktop and still access TTY’s. For example if you are running the box as a web server then while you may like the ease of use offered by the GUI you don’t want to incur the overhead of the GUI when running Apache/MySQL. So after doing all the mods you leave Apache running but turn the Gnome Desktop off.

To access a TTY hit ctrl-alt-F3

Or any of the other 4 (in total) TTY’s hit ctrl-alt-F3 to F6

To turn off the GUI

sudo service gdm stop

That’s it. The GUI is dead

To restart it

sudo service gdm start

In the old days (aka Ubuntu 16.04 and before) ctrl-alt-F1 through to F6 opened TTY’s. Now though in 22.04 (unsure about 20.04) it’s ctrl-alt-F3 to F6. But whatever the level of Ubuntu you are running Gnome Desktop stop start commands are the same.

Ctrl-alt-F2 takes you back to the GUI (if it’s running)

Ctrl-alt-F1 takes you back to the GUI log in screen (if the GUI is running)

You don’t have to stop or start the Gnome desktop to access any of these TTY’s. They are always there and always available. If you have accessed one and you want to return to the Gnome Desktop simply its just ctrl-alt-F2

If you want to go to the Gnome Desktop login screen and (say) login as another user it’s ctrl-alt-F1.

You can actually turn off the Gnome Desktop from a TTY you have opened within the Desktop itself (aka ctrl-alt-t or right-click and select open terminal). Then, while the Desktop will die, you will be left with a blank screen not at a TTY. If you do this you can get to a TTY by using ctrl-alt-F3 through to ctrl-alt-F6

If you do ctrl-alt-F1 or ctrl-alt-F2 and the desktop is not running you will just get a blank screen. Use ctrl-alt-F3 through to ctrl-alt-F6 to recover.

Here’s the rest of my Ubuntu /Linux specific how-tos

Avoiding JSON Error with Gutenberg Block Editor

If you are using the Block editor on WordPress also called Gutenberg and you’re getting the following JSON error with a red banner when you try and save a post:

The Dreaded Red banner

This may be of help. To call it a fix is a bit too enthusiastic. It is more of a Kludge but it got me out of a hole and it may help you. No guarantees though. If you want to read about the whole sorry saga that led to this post there this earlier post of mine here. This is based on what I learned there (the hard way) and is recorded in that post.

Background

The problem is nothing to do with Gutenberg or WordPress but is due to security rules on your host that veto the JSON update because in certain circumstances the data held within the JSON transfer (aka you blog post) will look suspiciously like an attempt at hacking your blog.

So this is in essence an incompatibility between Gutenberg and (usually) the Apache2 Modsecurity module on your host. Or rather the rules used to drive it. Here’s a great description by a lady far, far cleverer than me Fixes for Update Failed Not Valid JSON Response in WordPress

One Way forward that avoids this Kludge

It is possible to avoid this JSON Error with Gutenberg Block Editor by getting your host to modify it’s modsecurity rules for your blog by disabling certain rules for your site by whitelisting anything coming from your home/work URL for your blog URL.

Obviously though this entails you raising a ticket on your host and then persuading them to accommodate you.

As well as that they generally need a static URL to associate with the rule waiver. So if you’re URL is likely to change or you need to do work on your blog from different locations this will be a pain.

So I thought I’d see if there’s anything that can be done about it without whitelisting.

Itemising the Problem

In my last blog post I pointed out that the problem appeared to be caused by having round brackets with text in (like this). Here’s a summary of what I found:

1. Having round brackets (either with or without text in between them) BEFORE any links/images caused no problem.

2. Having round brackets with text in (like this) after a link ALWAYS caused a problem UNLESS there were a pair of empty brackets – like this () between the link and the populated brackets.

3. Including an image SOMETIMES (more often than not) causes the same behaviour as a link aka a JSON error. Again a pair of empty brackets was required to be in the post after the image but before a populated pair of brackets to get the thing to save.

JSON Error with Gutenberg Block Editor: The Fix (or Kludge)

The thing I have found out (at least on my rig) is that it does not matter where the () occurs just as long as it is before any populated brackets. First of all I placed them in text (ugh! Ugly). But then I had an idea. Why not place it in an html comment? An html comment is invisible in the rendered post and is easily added along with text.

Take a block with a link in it you’ve added to Gutenberg. If you look at the html it looks like this:

<p>some text here<a href="https://code.visualstudio.com/download/">This this link</a>more text</p>

So lets add an invisible pair of brackets as an html comment like this

<p>some text here<a href="https://code.visualstudio.com/download/">This this link</a><!--()--> more text</p>

Job done.

Similarly for an image..

The html looks like this:

<figure class="wp-block-image aligncenter size-full"><img src="http://testsite1.thistestsite.co.uk/wp-content/uploads/2023/10/predicted-disasters.jpeg" alt="see what happens here" class="wp-image-14"/><figcaption class="wp-element-caption">Plus a caption (here) it seems</figcaption></figure>

Change it to look like this.

<figure class="wp-block-image aligncenter size-full"><img src="http://testsite1.thistestsite.co.uk/wp-content/uploads/2023/10/predicted-disasters.jpeg" alt="see what happens here" class="wp-image-14"/><figcaption class="wp-element-caption"><!--()-->Plus a caption (here) it seems</figcaption></figure>

It seems that if the addition of the empty brackets goes anywhere else it triggers an error in the block editor. So you will be forced to have a caption field – even if it is empty. It also means you MUST NOT have populated brackets in the alt text field.

Modifying the HTML in Gutenberg

The need to have these empty brackets means that you need to modify the html within the Gutenberg editor before it will save. This though is easily achieved.

For links: Select the block containing the link that’ll have text plus link or maybe just a link. Click the vertical three dots on the right hand end of the controls. Select edit as HTML. Add the html comment containing only a pair of empty brackets immediately after the link terminator ( that’s the </a> ). What you need to add is this:

<!--()-->

For images: select the image then select edit as HTML as above. Add the <!– () –> in front of the caption text. This means you must have a caption field – even if it is empty. You can trigger the caption field by just adding a space or any temporary text then when editing the html remove the temporary text and add the <!–()–>

That’s it. There may be many other block types that will suffer from this problem but these are the main two and if (like me) they are more-or-less the only ones you use other than headers and paragraph blocks this may work for you too.

This though is ugly. I’m not wildly happy about promoting it as a fix because at best it is a work-round or a Kludge if you want to be brutally honest. Also it works (for me) today. It may not work tomorrow.

But if you are brick walled by this problem it may be a (temporary) solution. I know it sounds crazy. But there it is.

Hope that helps.

Chalkie.

WordPress: Updating Failed. Not a valid JSON response.

I was having a hell of a time writing a post. The damn thing just would not save.
I either got a warning message (in red!) “Updating failed. The response is not a valid JSON response.” (see screenshot below) or I got an message saying saving had been successful but no little black pop-up confirmation box. Either way the post had not saved. Repeating the operation just ended up with the same result.

Red banner announcing Not a valid JSON Response
This appeared at the top of screen when I tried to save the post

() – notice these apparently pointless empty round brackets here. They are what allows this post to be saved! More in a minute

In fact the first few times I got the red box then it was as if Gutenberg (or whatever triggers the warning) got bored telling me. So then I got no red warning BUT the post was not saved. If, after a failed save I tried to leave the block editor it warned me that I had unsaved changes. Changes I sadly could not save. (more on a work round for that in a minute).

The Finger Points at Gutenberg ()

I use Gutenberg. Aka – the Block editor. I forced myself to move over to it from the Classic editor a couple of years ago and I now don’t want to move back. BUT.. this is a show stopper! I think I had just updated to WordPress 6.3.1. Whether that is the cause, as of yet, I don’t know.

I did the inevitable Googling of “Not a valid JSON Response” and tried all of the suggested fixes on this link and on this link.

() – notice these empty brackets again!

These fixes entailed me cocking up all my plug-ins which (I hope) are now back to as they should be. But none of the options fixed my problem.

Just to add to the weirdness it appeared that the problem ONLY affects posts. Not pages. I also picked up on a couple of nebulous statements about “brackets” (see second link). Nothing clear. But it was all I had.

This below is not really a fix but it may-be is a work-round for you if you are in the same hole as me. It’ll have to do until I figure out a proper fix. Notice – even subheadings need the damn brackets!

Background and saving what you have ()

The first thing to realise about the block editor is that it is NOT running on your server. It is a Javascript application that is running in your browser i.e. on your computer. So until it or you does an update to your website the data is local. If it cannot communicate correctly (using what is known as the REST API) with your server then you cannot add/update posts on your server. That’s what’s happening. Your (my) post data is not getting out of the PC. The “Not a valid JSON Response” means it cannot upload your post.

So being in the position that I couldn’t save my shiny new post to the server the first thing I wanted to do was make sure I got it backed up so I didn’t have to sweat over entering all again (for a third time). so I’ll start off explaining how to save an unsaved post that will require minimal effort to re-enter it if necessary. Skip this if you just want to go to my work-round.

Saving Your Post Locally ()

I had entered a whole post and had not noticed the failure to update. So the server had about a third of it. I put it down to some crazy key press or whatever and binned the defective post and started again. Same result. I was not keen on the idea of losing it again! So I didn’t close the tab on Firefox (remember: this is running locally). After some experimentation I found the best way to save the thing was to ignore the title but highlight the rest of the post. When you’ve done that the block editor controls appear as here at the top of the post text.

Highlighting all of post to save.

() – It’s those darn pesky empty bracket again!!

Select the three vertical dots and then “Copy Blocks”. This copies the post as html. Then open a text editor and paste. You get this. You can also do a straight forward normal copy (or ctrl C) but this just gives you a textual copy and you’ll lose all the formatting.

Using Copy Blocks to save post

() – It’s those darn pesky empty bracket yet again!!

Why it’s better to use Copy Blocks ()

Using copy blocks means you can easily recreate the whole post in the block editor with a couple of clicks (even though it still wont save to the server until you fix the issue). You simply copy the text from the text editor and paste it into a single block in the Gutenberg block editor. Gutenberg works it all out.

So having saved the post I could now poke it around and find out what was wrong. After much experimenting this is what I found was my problem.

So.. The Problem : In Essence

I had an link (in my case to the Visual Studio Code download site) – this was fine!

BUT… after the link, in a different block I had a pair of round brackets with text in between them.

I kid you not. That was it.

The Problem Explained – as far as I can ()

The brackets (with text between them) broke the REST API and the post wouldn’t save. hence the “Not a valid JSON Response” banner. But this breakage ONLY occurred if there was a link somewhere in the text before they appeared. I could put round brackets wherever I liked after the link IF (and only if) the first pair of round brackets after the link had nothing in them. I found I could also put brackets anywhere in front of the link and it was fine. In writing this I just found that sub headers ALSO need brackets round them.

So, I am sure that this is a new problem that has been introduced sometime in the last 6 months. It could be in the Block Editor, the RestAPI, my security or the web-host security being over-reaching in its paranioa. I’d put my money on the last option as I have seen a few other folk complaining on Google about similar (though not the same ) issues all based around web host security. But it is just a guess and frankly life is too short and I’d suspect that this will be fixed soon.

I’d suspect that the security code checking the post update is seeing the URL then brackets so it is assuming it is trying to do some illicit function call to the “function” in between the brackets and blocks the update. i.e. its a bug in the hosts security code. Just a guess though.

Working Round this Nightmare ()

I’ve worked on this a bit more and have a temporary fix incorporating the info I gained from the investigation described above. It’s less of fix more of a work-round (or even a kludge) and there’s no guarantees it’ll work for everyone but it is described in this later post: Avoiding JSON Error with Gutenberg Block Editor. Below is my preliminary attempt predating the above link post..

My “solution” or work-round (for what it is worth – which isn’t much) is either:

Don’t use any round brackets after putting a link or image (maybe) in a post (square brackets appear to be fine).
Or Don’t use any links or images (hardly practical)
Or, (my preferred from now on) put a pair of empty brackets in the text just after the inclusion of a link or image. AND you also need them on the following header. (Arghhhhhh!)

If you look in this that’s what I’ve done here. Here I’ve left them undisguised them but normally I’d hope to bury them in some way.

Hope that helps.

p.s. If you know of a better fix/solution/work-round please tell me. This drove me mad.

p.p.s The next thing I am going to try is removing the spurious brackets after the post is up on the server. I don’t think this will work for links but I suspect they can be removed for images as the image will now be up on the server not on the local machine waiting to be uploaded.

See this later post for a more coherent description of what to do to work round this issue

Here’s the rest of my WordPress & related posts

Setting up Visual Studio Code IDE on Ubuntu 22.04 for Marlin

I needed to do this help a friend debug a problem he had with Marlin code. Normally I try and avoid IDE’s other than Eclipse but in this case there does not seem a great deal of integration for Eclipse with Marlin and it was more important to get bug chasing

I cam across a number of poorly documented hurdles getting this set up for Marlin (2.1). Depending on how long it is since this got published then some/all of these issues may have gone away.

Download Visual Studio Code. You need the deb package. From here: https://code.visualstudio.com/download

Once downloaded you can easily install the thing on 22.04 by right clicking on the download deb file and then select “Open with other application” then select “Software Install” and you are away.

Alternatively, you can do this on the command line with:

sudo apt install ~/Downloads/filename.deb 

You should end up with an icon in your Programming dropdown from the Applications menu top left of the Gnome desktop. The icon you need to click is obviously Visual Studio Code.

Open you newly installed Visual Studio Code IDE. Click on the extensions icon in the left hand column. It looks like four boxes.

Microsft Visual Studio Code after installation
The first view of VSC

Then in the search box type in “Auto Build Marlin” Install it.

You will end up with two new icons on the left hand side. One “M” is Marlin auto build.
The one that looks like an alien is actually not yet installed. That’s next. It’s called Platformio. It needs Python. But unfortunately it wont recognise the default Python3 in Ubuntu 22.04. So we have some kerfuffling to do with Python before we can install it. But first close down Visual Studio Code.

Python

If you open a console and type “which python” the system wont find it. That is because on 22.04 you have python3. Type “which python3” and all is well. But that does not help us with Platformio.

If you open Visual Studio Code and try installing Platform IO by clicking the alien icon. It will fail with:

PlatformIO: Can not find working Python 3.6+ Interpreter. Please install the latest Python 3 and restart VSCode.

There were two things I tried to get this working. The first may be redundant or it may be necessary to have along with the second. Either way I only got PlatformIO to install after I had done the second of these.

Close down Visual Studio Code.

The first “fix” was to install this which sorts out an alias for Python3 so it can be invoked with “Python” as well as Python3

sudo apt install python-is-python3

This though still failed with installing PlatformIO. For me it it failed with the same error message. Though now the system could access the Python interpreter as “python” as well as “python3”

This was the bit I added next and was needed to be installed before Platform IO would then itself install.

sudo apt install -y python3-venv

So what is python3-venv? It appears to be a way of creating a multiple of virtual Python environments so keeping, I think, each Python program running with its own clone of the interpreter. But whatever – that solved the problem.

When you’ve done these two installs restart Visual Studio Code and then click on the aliens head. Platform IO should install.

Now we need to set up our MARLIN code

Download it from here… https://marlinfw.org/meta/download/
The latest version for me was a bugfix level but normally I’d go for a stable level.

Unpack the downloaded zip file somewhere you want it.

Then in VSC click on the Aliens head aka open PlatformIO. It will do some initialising in the left hand column then it’ll look like this.

Click on “Pick a Folder” and point it at your Marlin code you just unzipped.
Then Platform IO will start configuring the project. There’s also, for me, an opportunity to install “Dev Containers” from Microsoft. I waited until the PlatformIO had completed configuring the project then took my life in my hand and installed the “Dev containers”. It installed and I then closed the resulting window on it. Leaving me with this…

visual studion code with Marlin
Visual Studio Code ready to debug Marlin

Of course we will need to modify the config files etc in the code. But first just to make sure the whole thing works go to “AutoBuild” and click build for one of the default environments.
It built this is what I get.

At the end, if successful, it opens the newly created directory holding the new files including the “firmware.hex”.

VLC on Ubuntu 22.04 Viewing Webcams Fix

I just bought myself a little USB endoscope for looking into all those difficult to get to places for grand sum of £9.95. The trouble was I couldn’t the damn thing to connect up to VLC on Ubuntu 22.04 (installed as a snap package). In fact I couldn’t even get the built in camera to connect to VLC! All I ever got was errors like this in VLC on Ubuntu 22.04

VLC error opening camera on Ubuntu 22.04 with VLC installed as a SNAP package
The dreaded VLC error message when it fails to open a camera.

I looked in in the system log (aka /var/log/syslog). This is what I found:

v4l2 demux error: cannot open device '/dev/video0': Operation not permitted

I tried loads of different thing all to no avail. Then I tried using Cheese, an web cam viewer application that gets bundled in with the standard install of Ubuntu 22.04. That worked fine with my integrated webcam in my laptop but had issues with the USB cam (aka the Endoscope) which cost me a lot of time.

Side Tracked by Cheese

Basically with Cheese if I start it up and the first cam it loads it the integrated cam I can then change over to the USB cam using the preferences menu (which for some bizarre reason lists the USB camera and the integrated camera twice). BUT if you then back out and it tries to load the USB camera first you get this.

Blank screen with Cheese on Ubuntu 22.04
Blank Screen with Cheese if USB camera first

I ended up thinking that cheese couldn’t use the USB camera. In fact if I started up with the integrated camera and switched over using the preferences then it worked. So somewhere along the line the integrated camera did some set up needed by the USB camera. I still don’t know what the problem is with Cheese. But if for some reason I wanted to use the USB camera with it instead of the integrated camera I’d have bring up the integrated camera first. Hey Ho.

Back to VLC

Anyway back to VLC. I could not get the damn thing to work at all. I Googled until I must have nearly brought Google’s server farm down. From my googling there were three things I did that fixed the problem. Arguably only the last one is really necessary.

First I added the user (aka chalkie) to the group video like this:

sudo usermod -a -G video chalkie

While that seemed a good idea it didn’t help.

Next I installed a set of tools which though very useful didn’t fix the problem either

sudo apt install v4l-utils

Finally I found a one-liner in a post (at the very bottom) that IMHO fixed the problem.
The issue is that my VLC is SNAP package! Canonical Snapcraft have this rather terse webpage on snap packages and how they access cameras. https://snapcraft.io/docs/camera-interface


As a result it does not have permission to access hardware like the integrated camera or the USB camera. So I needed to give VLC permission to link to the cameras. Like this

snap connect vlc:camera :camera

After that VLC could connect to the cameras via the menu media->open capture device->device name.
I selected v4l2:/dev/video0 and it worked.
Then I tried v4l2:/dev/video1. This failed.
Selection v4l2:/dev/video2 selected the second camera.
Finally I tried v4l2:/dev/video3. This also failed.

BUT… I had got the damn this to work. (of sorts) I Have no idea why I’ve got four entries yet only two cameras. But never mind. Time for a beer.

The rest of my Linux/Ubuntu posts can be found Here.

Fixing Pronterface on Ubuntu 22.04

There’s some bad news for those installing Printrun (which includes Pronterface) from the repository for Ubuntu 22.04. It doesn’t work. But there is a way of fixing Pronterface on Ubuntu 22.04.

But sadly, if you install Pronterface (aka the Printrun package) using Synaptic Package Manager or the ritual…

sudo apt update
sudo apt install printrun

You may (probably will) find that Pronterface won’t work. (But salvation is at hand!)

i.e. By “won’t work” I mean it never comes up. It crashes. Even if you try running it from a terminal you will get no further.

I believe this is associated with a missing/redundant library that got dropped from 22.04 that Pronterface (and the other utilities in Printrun) have some horrible dependency on.

I originally thought that the problem only occurred if your 22.04 was an upgrade from 20.04. But today I proved that wrong when a clean install of Ubuntu 22.04 installed Printrun and it also crashed. As Printrun is more-or-less an abandoned Ubuntu package there is no realistic chance that this package issue will be fixed soon. If ever (I hope I’m wrong but…)

But! Still, there is a way of fixing Pronterface!

First uninstall all the duff Printrun files either with Synaptic or with a terminal and…

sudo apt-get remove Printrun -y

All is not lost because the guy who developed the package has made available a git package which can be used instead. We are not actually fixing the Ubuntu Pronterface package, we are installing an updated version from Git. Package -wise it’s is not as clean as using an installed package, but if like me you are really more interested in getting the job done than faffing about then it is way beyond good enough.

Fixing Pronterface with Git

It can be done other ways but the easiest way is to use Git. Git is described here: https://git-scm.com/

If you don’t have Git installed it’s easy as there is a (working) Ubuntu package. Do the ritual..

sudo apt update
sudo apt install git

Then create a directory into which you are going to put the working code. For me it’s Mine it’s…

mkdir /home/chalkie/pronterface-git

Navigate from a terminal into that directory. We are going to download a Printrun Git package from: https://github.com/kliment/Printrun

 git clone https://github.com/kliment/Printrun

When it’s done you can start Pronterface from the command line with…

/home/chalkie/pronterface-git/Printrun/pronterface.py

And it should all work as normal from there on in.

Adding a Launcher for Pronerface to the Main Menu

But, of course that’s all rather ugly running it from the command line so add it to the main menu.

Go to the top left of the desktop and open Applications->System Tools->Prefences->Main Menu

You’ll get something like this.

Image Main Menu window Ubuntu 22.04
Image Main Menu window Ubuntu 22.04

Go into the menu item where you want to have Pronterface (for me its Programming) Then click the “New Item” button. You get this.

Launcher Properties Dialog Ubuntu 22.04
Launcher Properties Dialog Ubuntu 22.04

In the Name field put whatever you like for me it’s Pronterface-git.

The Command field needs the path to the copy of pronterface.py we’ve just installed.

Add whatever you like in the Comment field.

Then click the spring launcher icon on the left and add the path to the icon you want to use. Aka

/home/chalkie/pronterface-git/Printrun/pronterface.ico

click OK and you are done. You’re shiny new fixed pronterface should now run as normal when you click the icon in the Applications menu. That’s how I went about fixing Pronterface on Ubuntu 22.04. I works for me. I hope it works for you too.

My other 3D printer posts can be found Here

Deleting files that won’t Delete in Linux.

I’m not simply talking about deleting files in Linux that the user cannot delete. I’m talking about files that root cannot delete either!

I am playing around with a great little operating system called Porteus (website here). It base around Slackware (the oldest Linux distro) and is both amazingly fast and incredibly small. But I digress. But I came across this problem during my experimentation with Porteus.

Porteus installs on a USB stick and (as you do) I decided to burn it down and re-install. There are two directories one called Porteus and the other (unsurprising) called boot.

For the life of me I could not delete the boot directory. So I looked in it and then into one of its subdirectories syslinux. Here all but one file could, after fiddling about, be deleted by root. But there was one that could not. Namely ldlinux.sys.

Here’s what this directory looks like in a terminal.

A terminal display showing ldlinux.sys with only read flag set for root. This file is immutable. Deleting files that are immutable (even by root) cannot be done in one go.
Notice ldlinux.sys. Only the read flag is set for root. This file is also immutable. Until the immutable bit is cleared it cannot be deleted.

In directory syslinux (as you can see) almost all files by default are read-only. This can be fixed by root changing that to rw and then deleting.

BUT… There is one that won’t go and outstays its welcome. ldlinux.sys.

If you look ldlinux.sys is read-only for root and nobody else has access at all. Not even the group – which is root!

Even as root you cannot change the permissions on this file using chmod! It won’t go.

Immutable Files

I Googled this for a while and came across this post on stackexchange (here)

Basically the file has been made immutable. Which means it cannot be changed/deleted/modified by anyone. Including root. Deleting files with the immutable bit set is a no-no.

IBM describe it as so on one of their products: (here)

“An immutable file cannot be changed or renamed. An appendOnly file allows append operations, but not delete, modify, or rename operations.”

So basically, you cannot delete the file. Unless you remove the immutability first.

You remove the immutability using the chattr command. There is a nice write up on Tecmint.com here https://www.tecmint.com/chattr-command-examples/

Anyway what you need to do is:

chattr -i -a filename 

The -i removes the immutability and the -a removes the append-only flag (if there is one)

Either way you can now do a sudo chmod 777 filename (or sudo chmod ugo+w) and then delete it with sudo rm filename.

Hope that helps. Here’s the rest of my Linux/Ubuntu howto’s

A Merry Christmas on an Ender 3

As it’s nearing Christmas I thought I’d print a 3D “Merry Christmas” banner on my Ender 3 so it could then be stuck to my/your gate/house/fence/door or whatever. I’ve been meaning to add a few Ender 3 projects here for some time. This first one is a nice simple example. Maybe someone will find it useful too. The STL and Gcode files are below in a zip.

Here’s the final result.

Photographed on the black glass of our hob (which obviously was turned off!)

Simply two words. “Merry” and “Christmas”. I used the biggest font I could while still fitting both words onto the Ender 3 build plate. It actually prints the “Merry” below “Christmas” but as they are separate words that doesn’t matter.

A Cursive Font

The font I used was PacificoRegular and you can find this font Here on Google Fonts. It’s a nice cursive font for giving the look of joined up writing. For obvious reasons this makes mounting the whole word on a wall or gate much, much easier.

Size and Time Taken

The “Christmas” is approximately 11inches (28cms) long and 3 inches (8cm) high and the “Merry” is 7.5 inches (19cm) long and also 3 inches (8cm) high. The words are 2mm thick.

Printing this “Merry Christmas” on an Ender3 took 2hr 37 m.

Here she is on the build plate caught en-flagrant so to speak. (I discarded the dot on the “i” as it was not joined to the rest of “Christmas”.)

Ender 3 printing Merry Christmas
Yes – It reads “Christmas Merry” but I’ll leave you to rearrange as you wish after printing. (they are separate!)
I really must tidy up before taking these images in future!

I’ve included a Zip file (below) to two STL files. (One for “Merry” the other “Christmas”), and the Gcode file that I used to print them both on my Ender 3, so if you have an Ender 3 then you should be able to just use the Gcode file straight out of the zip. You <may> need to build a new one with a slicer from the STL files if you are using a different 3D printer.

Anyway, Merry Christmas!

Ubuntu Error: Opening the Cache: Fix

So there I was. I had gained a strange icon on the task bar on my desktop on Ubuntu 20.04 LTS. It looked like a little red No Entry sign (sorry – I didn’t think to screenshot it). I had an error opening my cache apparently.

When I clicked the icon I got this.

Package manager error message about error on opening the cache on task bar
Package manager error message displayed when error icon clicked on taskbar

The package lists or status file could not be parsed or opened. So I thought I’d be a smart-arse and just do a manual package update, what more could be possibly wanted?

Doom!

Well no. Not Doom. Just irritating. I think the reason I had got into this state was that my machine had apparently locked up the day before. Like an impatient idiot I had forced it to turn off.

I now assume that this was probably while it was in mid flow doing an update. The result being that I managed to inadvertently wreck the status file or the package lists. So any new update failed before it had even started.

The actual error message from the package manager when I tried running it was this:

E: Read error - read (5: Input/output error)
E: The package lists or status file could not be parsed or opened.
E: _cache->open() failed, please report.

So how to fix this?

There’s lots of stuff all over Google about getting an error on opening the cache. Some of it going back ten years or more. Some is unclear and some contradictory. Other bits out-of-date or just plain wrong. I found a couple of answers that I amalgamated and succeeded in salvaging my machine. So this is what I did and it appears to have worked a treat for me. BUT… Caveat Emptor and all that. (I got the guts of this fix from Here)

First the scary bit. You have to delete all the files under directory /var/lib/apt/lists. But DO NOT delete the lists directory itself. (I didn’t back mine up my broken copy first (because at times I’m an idiot) but if you can maybe you should. After you have (or you decide not to) open a terminal and issue this:

sudo rm /var/lib/apt/lists/* -vf

Here’s what I got back.

chalkie@chalkie-TP550LA:/var/lib/apt/lists$ cd
chalkie@chalkie-TP550LA:~$ sudo rm /var/lib/apt/lists/* -vf
[sudo] password for chalkie: 
rm: cannot remove '/var/lib/apt/lists/auxfiles': Is a directory
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_InRelease'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_binary-amd64_Packages'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_binary-i386_Packages'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_cnf_Commands-amd64'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_dep11_Components-amd64.yml.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_dep11_icons-48x48.tar.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_dep11_icons-64x64%402.tar.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_dep11_icons-64x64.tar.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_main_i18n_Translation-en'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_multiverse_cnf_Commands-amd64'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_restricted_cnf_Commands-amd64'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_binary-amd64_Packages'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_binary-i386_Packages'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_cnf_Commands-amd64'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_dep11_Components-amd64.yml.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_dep11_icons-48x48.tar.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_dep11_icons-64x64%402.tar.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_dep11_icons-64x64.tar.gz'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal-backports_universe_i18n_Translation-en'
removed '/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_focal_InRelease'

Now you need to re-generate the files.

sudo apt clean
sudo apt update

Here’s what I got.

chalkie@chalkie-TP550LA:~$ sudo apt clean
chalkie@chalkie-TP550LA:~$ sudo apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://gb.archive.ubuntu.com/ubuntu focal InRelease [265 kB]       
Get:3 http://gb.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:4 http://gb.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:5 http://security.ubuntu.com/ubuntu focal-security/main i386 Packages [515 kB]
Get:6 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease [3,065 B]
Get:7 http://gb.archive.ubuntu.com/ubuntu focal/main i386 Packages [718 kB]    
Get:8 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [1,822 kB]
Get:9 https://packages.microsoft.com/ubuntu/20.04/prod focal/main all Packages [2,176 B]
Get:10 http://gb.archive.ubuntu.com/ubuntu focal/main amd64 Packages [970 kB]  
Get:11 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 Packages [28.4 kB]
.
.
.
.
Get:112 http://gb.archive.ubuntu.com/ubuntu focal-backports/universe DEP-11 64x64 Icons [22.6 kB]
Get:113 http://gb.archive.ubuntu.com/ubuntu focal-backports/universe DEP-11 64x64@2 Icons [29 B]
Get:114 http://gb.archive.ubuntu.com/ubuntu focal-backports/universe amd64 c-n-f Metadata [864 B]
Get:115 http://gb.archive.ubuntu.com/ubuntu focal-backports/multiverse amd64 c-n-f Metadata [116 B]
Fetched 53.2 MB in 26s (2,032 kB/s)                                            
Reading package lists... Done
Building dependency tree       
Reading state information... Done
12 packages can be upgraded. Run 'apt list --upgradable' to see them.

Now finally you might as well do any upgrading to the file set (this does NOT upgrade you to a later version of Ubuntu – just to the latest version of the one your are on)

sudo apt dist-upgrade

Here’s what I got:

chalkie@chalkie-TP550LA:~$ sudo apt dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  libxmlb1
Use 'sudo apt autoremove' to remove it.
Try Ubuntu Pro beta with a free personal subscription on up to 5 machines.
Learn more at https://ubuntu.com/pro
The following packages will be upgraded:
  aspnetcore-runtime-6.0 aspnetcore-targeting-pack-6.0 dotnet-apphost-pack-6.0
  dotnet-host dotnet-hostfxr-6.0 dotnet-runtime-6.0 dotnet-runtime-deps-6.0
  dotnet-sdk-6.0 dotnet-targeting-pack-6.0 libfprint-2-2 libfprint-2-tod1
  ubuntu-advantage-tools
12 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
Need to get 124 MB of archives.
After this operation, 2,048 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 ubuntu-advantage-tools amd64 27.11.3~20.04.1 [161 kB]
Get:2 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 libfprint-2-2 amd64 1:1.90.2+tod1-0ubuntu1~20.04.9 [212 kB]
Get:3 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 libfprint-2-tod1 amd64 1:1.90.2+tod1-0ubuntu1~20.04.9 [44.6 kB]
.
.
.
Configuring...
--------------
A command is running to populate your local package cache to improve restore speed and enable offline access. This command takes up to one minute to complete and only runs once.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
chalkie@chalkie-TP550LA:~$ 

Notice the end bit “Configuring…” Personally I took the one minute with a pinch of salt, left it for ten minutes and had a cup of coffee. I just let it run.

And that’s it! The little no-entry sign has vanished and I can now do updates/changes again!

Click here for the rest of my posts on Linux/Ubuntu issues.

Garmin Vivoactive 3 -broken case at watchstrap lug- Fix

My wife bought me a Garmin Vivoactive 3 music smart watch back in 2018 ( 4 years ago). As far as a sports watch goes it did (and still does) just about all the things I want it to. But then the watch strap broke. Or rather one of the little sockets where the watch strap holder pins goes fractured. The watch fell off my wrist. Luckily an observant passer-by noticed and told me. Otherwise I would have lost the thing.

Broken lug on Garmin Vivoactive 3 watch case
The broken lug on the watch case

There are a number of forum entries on the Garmin site describing exactly this issue. So I wasn’t alone. But, the only think was that my watch was 4 years old and obviously out of guarantee. Even so I contacted Garmin and to be fair they offered to repair/exchange the watch – but at a price. (£79.99 about $95).

Now, while I like the watch, I could get a completely refurbished one for around the same price. Or I could get a replacement by a competitor (aka here) for less.

So I thought I’d have a go at fixing it first. I came across this blog post by a guy who has used this 2 pack epoxy and/or superglue. I tried the superglue and for me it didn’t work. The 2 pack epoxy looks like a good idea but it does take time to cure and being impatient I looked for another solution. So I went for my standard fix-anything material. Polymorph. Here’s an Amazon link (USA) (UK)

Polymorph is a low melt temperature plastic that when set is much like nylon. i.e. strong and durable. It’s only down side is that it melts at about 65 DegC (150 farenheit). But this is also of course it’s advantage! You put a small piece in a cup and pour on boiling water. Then fish out the clear sticky result and use it (quickly!) like a glue/filler. When it sets it is amazingly tough. If you foul up you can get it off whatever it is on with hot water or (say) a soldering iron. It’s a truly wonderful material that I’ve used for years and has very many uses. Fixing my Garmin watch is hopefully one more.

Because I’m now paranoid about any more breaks of these lugs (or the failure of my fix) I have added a small safety feature to the watch in the way of a loose elastic band that goes over my wrist as well as the strap. So if the strap fails hopefully he watch won’t fall off my wrist unnoticed. I secured the elastic band to the watch strap (unbroken end) using a small cable tie

Garmin Vivoactive watch with safety band and Polymorph fix
Make sure the elastic band isn’t too tight! It is there simply as a precaution. Put your wrist through it then do up the strap. The Polymorph fix is the white blog on the right

How long will this fix last on my Garmin Vivoactive watch? I’ve no idea. I’ll update the post as I go along. The fix looks ugly and I could tidy it up and paint it black. But life is too short!

[ It’s now 30th December, so that’s over 2 months since I used the Polymorph to do the fix and it’s fine! It’s still ugly and the rubber band rotted through and has been replaced by a bit of string which in essence just links the strap together either side of the watch. So, if a lug either side failed the string with strap would still form a continuous band. But… so far it’s been unnecessary as the repaired lug has held up well! ]

Finding my WattsApp Videos and Images

I often want to save videos and images from WattsApp to my PC. Yet finding my WattsApp Videos and images always seems a problem. I can never seem to locate the damn things on the phone.

The answer is trivially simple, but as I keep forgetting it, it is obviously forgettable. Consequently I’ve written it down as a bulleted list so my inadequate brain can actually cope with doing it without enduring heaps of pain and suffering.

My Moto G10 is running Android 11. But I’d think this will be much the same for any phone. This is aimed at transferring the files to a PC running Ubuntu 20.04. But (obviously) just about any version of Linux, especially with a Ubuntu or Debian based operating system will be virtually identical. I would imagine that a Windows or Mac based PC would be pretty much the same as well.

Here’s How.
  • Connect PC to Phone using USB cable.
    For me I usually get an empty window as the phone only connects for charging not data transfer. So go into Settings on the phone, select “connected devices”, tap the USB entry and change it to “file transfer” in the presented bullet list.
  • Close any windows on the PC that have auto-opened
    Mine always show no access at this point.
  • Then from the “Places” list in the main Ubuntu menu select whatever your phone is.
    You should get another window but this time it will have a directory for internal storage.
  • Click on this.
    And then select “Android”
  • From here select “Media”.
  • From here select “com.whatapp”.
  • Now select the Videos folder or the Images folder
    As is your want.
  • Select the image(s) or video(s) you are interested in.
    Drag/drop (or whatever) the images/videos from the phone folder to your PC

And That’s it!! So hopefully finding my WattsApp Videos and Images won’t be such a pain from now on.

The rest of (my rather sparse) list of Android phone How-tos is Here

Permalink 404’s & Response is not a valid JSON response

I first came across this WordPress cum Apache2 Permalink 404 problem back in 2018 and described a fix here. Unfortunately I had forgotten all about it and even though the damn fix was sitting right there in front of me I had to re-endure all the grief and suffering again. However during this grief and suffering I came across another nasty little feature that seem associated with the new Block editor. (previously I was using the classic editor) Namely after changing the permalink I got “Updating failed. The response is not a valid JSON response.” whenever I tried changing a post.

I previously wrote up a fix for the 404 problem when you change permalink style here. While it is much the same as this it is here, it is four years old and pre-dates the Block editor. But it may be worth a look along with this in case it somehow explains thing differently and more usefully for you.

This problem (in total) probably only applies to situations where you are using your own Apache2 server. But it may apply in part if you’ve not got the .htaccess file properly configured on some hosted webspace. I would imaging that if you are using a hosting service then it would be highly unlikely you would need the bit below about a2enmod.

I must add that this problem (2nd time ) almost beat me to death. It appeared to be intractable. But that was only because I had failed to configure Apache properly. (or read my own f**king notes!). I didn’t think (until now) that the two issues in Permalink 404’s & Response is not a valid JSON response” were related. But I think they are. Either that or I fluked a fix to both.

Here’s What Happened

Basically I installed WordPress with no issues. I built a child theme, again with no issues. I could build pages and posts using both the Gutenberg and the Classic editor. BUT I could only use the “plain” default URL settings for both posts and pages. If I changed it under settings→permalinks to something a bit more useful I’d end up with a 404 not found.

In the Gutenberg editor I also noticed that I often (always?) got a red bar with the following error message in it..

“Updating failed. The response is not a valid JSON response.”

So if you are a getting this then maybe it is tied up with this permalink problem. Obviously before I started using the Block editor and before I fixed the permalink problem I didn’t get it. After I fixed the permalink problem in apache2 then the JSON invalid response issue I was getting in the Block Editor disappeared too.

So, What was I getting with the unconfigured Apache?

I changed the permalink setting away from the default. Then in the editor the new URL for the post/page looked correct. But it just did not work. It always returned 404 Not Found.

Here’s what I did to solve this (for me) They were not done in this order but I think that this is the best order to do them in. It may also be that not all these steps are needed.

Here’s the Fix

1. In etc/apache2/apache2.conf: change AllowAll=none to AllowAll=All. I did this for all four settings but I think that only the one related to /var/www is necessary. You change all 4 to get it working back out the ones you don’t need by trial and error. I’m pretty sure you only need /var/www

Doing this enables the .htaccess file (more in a minute). Without doing this .htaccess file is simply not read.

2. Turn on mod_rewrite

sudo a2enmod rewrite

(this was the missing bit that killed me for two days. This MUST be done if it’s your own server)

3. Ensure the .htaccess file exists and holds the following code (or similar. In my previous post I used a slightly different incantation but never mind – the standard wordpress version is fine)

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteBase /

RewriteRule ^index\.php$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

I gather it is possible to completely dispense with the htaccess file and simply do everything in apache2.conf. But most people only host a site to develop it and then upload it to a host provider where use of a htaccess file is not optional. So you might as well do it in your prototype code too.

Make sure you htaccess file is writable by www-data as well as the owner.

Restart apache2 after the mods. with sudo service apache2 restart

(or whatever other incantation you like)

That’s it.

Hopefully the permlinks should now work and those hideous Permalink 404’s & Response is not a valid JSON response messages will be history too.

Lost Root Password to Mysql and Phpmyadmin

Yes. I committed the cardinal sin. I lost my root password to mysql and phpmyadmin. Consequently I could not log in as root in order to change the permissions for a user. Of course I hadn’t noticed I had lost the damn thing because normally I never-ever log in as root to anything.

It was only when I need to fiddle about with other users when I typed in what I thought it was – only to find my memory was crap. Of course, I had written it down somewhere safe. I always do. The problem was (crap memory again) I couldn’t find where.

I always obfuscate saved passwords – just in case some nasty person raids my desk and steals my documents. So it is probably staring me in the face. On the plus side I suppose it shows my obfuscation works pretty well. Hey Ho.

Check Your Mysql Version

Here’s what I did to reset the lost root password to mysql and phpmyadmin. This worked for me. I’m running mysql ver 8.0.30 Check this with:
mysql -V
Mine come back with this.
mysql Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
This may not be compatible with all other versions but I expect it should be with this or later versions.


This method (after trying and failing with many others) is based largely around this post on devanswers.co. So major Hat Tip to them. There are a few extra steps here mainly surrounding clean up before actually changing the password. But if you are running mysql 5 you would probably be better off at devanswers as they deal with that earlier version as well as mysql 8. But you may still want to do the mysql killing and clean up as described here.


If, like me you got to this point after many failed attempts to fix this we need to check what sort of dismal state we are in.

We need to kill mysql. Make absolutely sure it really is dead. It’s worth checking that you haven’t got multiple versions running. This may (especially) happen if you’ve been faffing around with other failed attempts to crack in to mysql (like I had).

Cleanup: Kill all Mysqls

sudo ps -A | grep mysql – if this shows you one or more mysql or mysqld processes running then….
sudo pkill mysql
sudo pkill mysqld
sudo ps -A | grep mysql
– make sure this time nothing comes back.


Now we have to make sure the following directory (and associated user) exists. It may well not.

If you try and push ahead without having this directory properly set you will get something like this:
chalkie@chalkies-box:~$ mysql -u root mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
[1]+ Exit 1 sudo mysqld –skip-grant-tables

If you already have this error message START AGAIN. Go back and check ALL instances of mysql are dead THEN create the directory as below.


ls -l /var/run/mysqld
If it is not there and the owner is not mysqld:mysqld then…
sudo mkdir /var/run/mysqld
sudo chown mysql /var/run/mysqld

check it again with
ls -l /var/run/mysqld


Now restart mysql in safe mode like so..
sudo mysqld_safe –skip-grant-tables&
You’ll get something like this back..
[1] 100757
chalkie@chalkies-box:/var/run$ 2022-08-21T12:57:00.853461Z mysqld_safe Logging to ‘/var/log/mysql/error.log’.
2022-08-21T12:57:00.907704Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql


now we can login as root like so…
sudo mysql –user=root mysql

You now should be logged in as root the prompt should now be mysql>


Now you are logged in as Root

From here you can now do all sorts of damage. Or even change the lost password for root as so..

First remove the old password with this…(notice the trailing semi colons and ignore the mysql> prompt)
mysql>UPDATE mysql.user SET authentication_string=null WHERE User=’root’;

mysql>flush-privileges;

mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘a-new-pw-i-promise-never-to-forget’;
mysql>flush-privileges;

And that’s it. Log out and kill the safe mode mysql process

mysql>exit;
sudo killall -u mysql


Now restart it:
sudo /etc/init.d/mysql start
CHECK the new password for root works by logging into mysql and/or phpmyadmin with it!!!

I hope that helps. My other Ubuntu style fixes are listed HERE

Find Ubuntu Desktop Background image

I had an annoying issue in that I had forgotten where I had placed the image I was using for the background on my Ubuntu Gnome Desktop. For some God-forsaken reason I had set the image in a non standard place and simply couldn’t find it.

So here’s how to find the background image on Ubuntu, wherever that pesky image is.

Open a Terminal (ctrl+Alt+t)

Then at the prompt enter:

gsettings get org.gnome.desktop.background picture-uri

Usually the images are in either the main system repository of
/usr/share/backgrounds
or locally…
/home/username/.local/usr/share/backgrounds

But you can put them anywhere (not a good idea imho) But if you want to…

Open the image you want by double-clicking it. Then right click on the image and select “set as wallpaper”. This will set the image as wallpaper BUT will NOT copy it into a sensible location (see above). So, if you forget where it is you really need the gsettings command to find it as I found out the hard way.

The best way to change or find the background image on Ubuntu is by either right clicking on an unused part of the desktop and selecting “Change background” which takes you directly to the setting GUI,
or by using the system-tools GUI under under main Applications menu at: Applications->System Tools->Preferences->Background to access the same GUI.

Here you can change the image and/or add new ones. Crucially if you add a new one the image you add is copied to the /home/username/.local/usr/share/background directory and is safe from accidental deletion.

The rest of my Ubuntu How-to’s and Gotch’s are here

Garmin Connect: How to Unhide a Missing statistic

So you’ve accidently or somehow lost (say) the floors climbed statistic or the calorie count statistic or the steps count statistic from the main screen (or “My Day”) on your Garmin Connect app on your Android phone.

For those who don’t know the Garmin Connect Android App displays the data collected by a Garmin VivoActive watch like this one. The watches are great. Though Garmin could spend a little more time documenting stuff like this here.

Getting the display of statistical data back on the Garmin Connect App is simple once you know how. Sadly the “knowing how” is the painful part . I still bear the emotional scars.

So here it is – and what causes it. This may/may not be comprehensive but this is what I did.

First – what causes it.

When you want to dispose of the Garmin Connect App on your Android phone you (as normal) sweep to the right. BUT if you sweep too slowly instead of the closing the app it assumes you want to remove whatever statistic is displayed that you just swept over from the main screen. It comes up with a selection box like this.

Notice Floors “Always Hide” & “Undo”

But it doesn’t hang around for you to procrastinate over it. If you don’t select “Undo” within a few seconds then the particular statistic is removed by default. Never to be seen again. Until you restore it.

But it appears that Garmin think that providing information on how to restore hidden statistics is either unnecessary, intrinsically obvious or perhaps forms some state secret that should never be divulged to the plebs using their products.

So here’s how I restored my missing floor count statistic after accidentally removing it.

The Fix

Simply scroll down the main screen – right to the bottom. There you will find a a button “Edit My Day”. Tap it.

Tap the “Edit My Day” button at the bottom

Your missing statistic should be at the bottom languishing under “Hidden Cards” BUT it may not be. (more in a minute)

If it is in “Hidden Cards” Tap the little plus sign next to it and it will get added to the active cards above it. Then to put it where you want in the order of displayed statistics, tap and hold over the three lines on the right and drag the statistic to the position your want.

Job Done – unless…..

It’s not in Hidden Cards!

“Edit My Day” display. Tap the minuses to remove, pluses to add.

But what if the statistic that is missing is NOT under “Hidden Cards”?

And it is still listed in the active card section? This happened to me.

What you have to do is tap the minus sign on the left of the statistic so it is (officially) removed. It should now really be listed in the “Hidden Cards” section. So now tap the little plus sign and position the statistic as above.

I hope that helps. This drove me mad! All because there is nothing (that I found anyway) on the Garmin site or elsewhere about this.

Mirror a Design in Freecad

I wanted to create a separate 3D print that was the mirror image of one I had already had. So I needed to mirror a design in Freecad. There is probably a better way of doing this but I haven’t found it yet.

This is not about simply mirroring a single object but mirroring a completed design. By mirroring I mean making an inverse copy, like a mold from a die or in my case the left hand end of a symmetric object from a design for the other half or one end.

Background

I had a design which was a seat in two halves that I wants to 3-D print on my Ender 3. The two halves plug into each other. One was the left side and one the right. They are in essence the same part but one with a socket and the other a plug. But of course other than the socket and plug they are exactly the same – but mirrored.

So rather than design the thing twice I copied the plug end then changed the plug to a socket. The only problem then was that they were both right handed. One of them needed to be mirrored to become the left hand end. So I needed to mirror the design in Freecad.

This it what I did

Here’s the part ….

Here’s the part

Go to Part design in the menu. Select all of the parts of the design (i.e. use ctrl mouse-click to select each part) Then in the part menu select mirroring… . This will build you an exact mirror of the original.

So far so good.

The problem is is that the original is still there and the parts in the original are used to build the mirrored design which means you cannot delete them without risking breaking the design.

Like this…

The trick is that after the mirroring stage, before you delete anything, you select the mirrored items then under “create a copy” in the Part menu, select “create a simple copy”.

This does exactly as it says. It duplicates the items you have selected BUT the new items will not be dependent on the original. Now you can select the originals and the first mirrored copy and delete them. Leaving the simple copy as the finished inverted item!

As I said I expect there is a better way without needing the two step process but I am darned if I can find it. The rest of my Freecad posts are Here

Does Old Seed Grow?

Just a warning: I’m going to present a contrarian viewpoint on planting old seed here based on my own experience that I’ll detail below. I’m quite willing to accept that my results are a fluke. But, my results are at least interesting. Do old seeds grow? I’d say yes! (or at least – maybe)

Most (all?) websites I have looked at, whether it be bulletin boards, articles or whatever, strongly indicate that you are wasting your time trying to grow seed that is a couple of years or more beyond its sell-by date. I’ve seen more than one of post suggesting you just put anything over two years past its “sow by” date in the bin.

This may be true for unpackaged seed (by that I mean seeds not in a sealed foil wrapper) but I don’t think it is necessarily true otherwise.

Obviously seed will deteriorate over time. That is a given. But the questions are: “how much deterioration (i.e. germination rate) and how long.

Old Seed: The Experiment

Last year I decided I wanted to start growing herbs. I’ve been growing Chives for quite some time but nothing else. I remembered getting a multipack of herbs seed a while back. In fact it was from these I started growing the Chives. The other three herbs (Sweet Basil, Coariander and Parsley) were still in their little foil wrappers.

I looked on the packet. It said “packed 2008” sow by 2011. I have a penchant for agricultural experimentation (see this post on growing an apple tree from seed!) So I propagated them anyway. When I did this it was 2021. They were ten years out of date! I considered not bothering but on a whim decided to try an experiment and grow a few of each type on kitchen roll. As a control I grew some cress and mustard in the same way.

I placed the seed on kitchen roll then inserted that into a zip lock transparent food bag. Then I added a little water enough to make the kitchen roll in the zip lock bag soggy. Finally I blew into the zip lock bag to inflate it, zipped it up and retired to a safe distance.

As expected the Cress and Mustard loved it in their damp little greenhouse and prospered.

But so did the seed that was ten years past its “use by date”

“Mostly” the seeds grew.

The Result

So it looks like may still get a useful batch of seedlings from old seed as long as that seed is in a foil wrapping.

Maybe I was lucky. Or possibly these species are more capable than others of surviving for 13 years from packing.

But, I would suggest that if you have some old (and dare I say) expensive seed, rather than chucking it in the bin, find a seed tray and bit of compost and chuck them in there. Or of course you can get by like me with a zip lock bag and a bit of kitchen roll.

Now what about seed that is not in a foil wrapper? Sadly I haven’t performed an experiment on the many old un-foil wrapped seeds I have so this is a bit anecdotal.

But I did buy a pile of seeds in a closing down sale some years ago. These are not foil wrapped. The ones left still mostly work (Tomatoes and Beetroot). The yield may be lower but frankly I still have more plants than I know what to do with. These seeds have a “plant by” date of 2016.

I also have hoards of seed I take from my own plants. I have chilli pepper seed going back ten years which I have yet to experiment with. But I have successfully grown Chilli’s from seed thats two and three years old. True the yield is down, but when you have 500+ seed and want a maximum of ten plants it’s a no-brainer.

I’m planning to try an experiment on my older seed like the one for the foil wrapped herbs, just to see what happens.

The problem is getting round to it!

Using Linux Cron to drive wp-cron.php in WordPress

Here’s how I recently got Linux Cron to drive wp-cron.php file on one of my WordPress sites. This was an utter nightmare! But it now works (for me). Please be aware these are my notes. They are basically a reminder for me as to what I did. But if you are struggling and they help you then that’s great.

Be aware they may/may not give the optimum setup. All I know is that for some god-forsaken reason(s) this was unreasonably painful. I really do not know why this more-or-less trivial Linux/php setup caused me so much grief. But I don’t intend revisiting it to refine it or find out. Here’s what I did:

Background

WordPress uses (by default) a built-in pseudo cron system that relies on people visiting your site in order to operate. This has two distinct disadvantages.

  1. If you site gets few visitors then cron jobs are run rarely. This can be a problem in flagging up (for example) updates.
  2. If your site gets many visitors the cron jobs are run too often. You are continually looking for updates this can slow your site load time down.

If you control the server, or at least have access to cron then you can get round this by disabling the pseudo cron and using the system cron to fire off cron events to your WordPress site.

The Fix: Getting Linux Cron to drive wp_cron.php

This is for a site I have (not this one) which is on it’s own Apache2 server. So the changes in this case involve using the Linux crontab. If you are using shared hosting the setup is more-or-less the same, just use the cron facility in cpanel (assuming your host provides cpanels).

The first thing you need to do is disable the on-board pseudo cron. Do this by adding this line in file wp-config.php in your WordPress directory.

define('DISABLE_WP_CRON', true);

Now after you restart Apache2 with..

sudo service apache2 restart

wp-cron.php is now no longer being run using the inbuilt pseudo cron.

Now we need to set up a crontab for the owner of wp-cron.php and run it from there

Under Ubuntu the usual owner of the files that make up a wordpress install in /var/www has the name of www-data. This user is usually created when you install apache2.

www-data is a headless user with no shell or home directory. It’s done like that to make things a little more secure and difficult for anyone trying to hack your system.

You can change this default name by modifying fields APACHE_RUN_USER and APACHE_RUN_GROUP in file /etc/apache2/envvars if you want to. But I’ll continue using it here for clarity.

You create a crontab for www-data with

sudo -u www-data crontab -e

This drops you into an edit session using nano. There is a red warning stating that there are problems with the history file. Which is unsurprising as there isn’t one. www-data has no shell or home directory. So there is nowhere for user www-data to put one. Never mind. Ignore it

To get linux cron to drive wp-cron.php every (say) 15 minutes add this line in the nano editor

0/15 * * * * cd /var/www/<path to wordpress files>; usr/bin/php /var/www/<path to wordpress files>/wp-cron.php >>/<path to file writeable by www-data> 2>&1

You almost certainly do not need the path change (i.e. cd command) but as I said, it works for me. I also fully pathed php as I have assumed that www-data will not know where it is otherwise. But I don’t know that for certain. It works. I’ve had enough with tinkering with it. The other thing you need to ensure is that you have actually make <path to file writeable by www-data> actually writeable by www-data.

Save and exit nano. Nano seeks your permission to store the file in a temporary directory which it may do. But I also <believe> the system cron saves it away as well. Whatever. It works.

Notice I’m using php not wp-cli. That is because for some god-forsaken reason I could not get wp-cli to issue the command to run wp-cron.php from within the crontab. It worked perfectly outside of crontab. But not within it. I don’t know what I was doing wrong. Now I am past caring.

Also, you’ll no doubt notice that my php invocation of wp-cron.php is different to just about every other one I have seen relating to this issue on Google. Mostly other solutions I’ve seen which get Linux Cron to drive wp-cron.php add a parameter to the end of the wp-cron.php. Something like this:

/usr/bin/php wp-cron.php?doing-cron.

Why? (i.e. why the ?doing-cron bit ?)

Having the parameter did not work for me. So I ditched the parameter (i.e. i.e. the ?doing-cron bit.) . Then it worked.

I have no idea why that parameter was there in the first place. But I (initially) slavishly followed what I read. Only when it bit me did I remove it.

So (hopefully) wp-cron.php is now being run from crontab. But how do you know it’s working? More to the point how will you know in (say) two weeks time that it hasn’t fallen over for some reason?

Solution: You get it to send you an email once in a while just to show it is still running.

You need to add some simple code to your functions.php file in the root of your active theme. This also caused me much grief and suffering. Again, it is a trivial modification! And to a file I have added lots to in the past with little problem. Maybe I was just having a bad day.

This is what I added:

//-----------------------------------------------------------------
// Trigger cron from linux rather than use the 
// sub-optimal wordpress trigger
//-----------------------------------------------------------------
add_filter('cron_schedules', 'thisfunctionname');

function thisfunctionname ($schedules )
{
    /*$schedules['every_hours'] = array(
        'interval' => 3600, //in seconds
        'display' =>__('Every hours' ),
    );*/
    $schedules['2_minutes'] = array( 'interval'=> 120, 'display' => __('2_minutes' ),);
    /*$schedules['60_minutes'] = array( 'interval'=> 3600, 'display' => __('60_minutes' ),);
    $schedules['4_minutes'] = array( 'interval'=> 240, 'display' => __('4_minutes' ),);*/
    	
    return $schedules;
}

add_action( 'wp', 'custom_cron_job' );

function custom_cron_job()
{
    if ( !wp_next_scheduled( 'send_this_email' ))
    {
    	wp_schedule_event(time(), '2_minutes', 'send_this_email' );
    	/*wp_schedule_event(time(), '60_minutes', 'send_this_email' );*/
    	/*wp_schedule_event(time(), '4_minutes', 'send_this_email' );*/
        /*wp_schedule_event(time(), 'every_hours', 'send_this_email' );*/
    }
}

add_action( 'send_this_email', 'generate_this_email');

function generate_this_email()
{
    $email_subject = "Test 2min  subject";
    $email_content = "This is the 2m test";
    wp_mail( 'your-email-address', $email_subject, $email_content);
}

And that’s it. That’s what I did to get Linux cron to drive wp-cron.php. It will in turn generate an email to the specified email address at whatever time period you choose – (above settings it is just for testing – I’ve left some commented out alternatives). Obviously, do not forget to put your email address in the last line.

If you stop getting emails when you expect them – there is something wrong.

Now I’m going to have a beer (or three).

The rest of my Linux-ish posts are catalogued Here

Ender 3 Leveling the Bed

Here’s how I go about leveling the bed on my Ender 3. I do it by a mixture of eye, feel and repetition. I expect most folk use a similar process but here it is anyway. There are some great gizmo’s you can use instead that take most of the grief and suffering out of it but I’ll come to those later. I still use the manual process.

But if you want to just go straight to the gizmo’s here they are on Amazon. For 8 bit machines (and I assume 32 bit as well) there’s this BL Touch on Amazon. If you have a 32 bit board then you can use the more sophisticated CR Touch here on Amazon. If you can’t figure out if your Ender 3 is 8 bit or 32 bit then maybe this This Post or This Post will help. (there is another one as well that deals specifically with the CR Touch and the 32 bit processor issue in This Post).

Leveling the Bed: This is What I do.

When leveling the bed on an Ender 3 you use four wheels that tighten down spring loaded threads that control the height of the bed. On in each corner. You need to adjust the bed not only to be level it but so that the clearance from the home position of the nozzle to the bed is vertically about 1/2 the diameter of the nozzle outlet.

On a typical set-up for an Ender 3 the nozzle diameter is 0.4mm so you are looking for a clearance between the bed surface and the end of the nozzle of about 0.2mm. Usually for a nozzle diameter of 0.4mm the layer height of each layer of the print is about 3/4 the nozzle diameter or, about 0.3mm.

The usual way to determine typical layer height is to divide the nozzle diameter by 1.25 which gives us about 0.32mm for the ideal layer height for a 0.4mm nozzle.

So my starting height is perhaps slightly under the standard layer height. The result (imho) is that the first layer extrusion gets bedded firmly down onto the bed and you are less lightly to get the print detaching from the bed during the print.

Ender 3 Leveling the Bed from Scratch.

First of all I remove the bed (either resin or glass) and then home the print head. The print head locates off the build plate (see this post) and does this by first raising the print head about a centimeter above the build plate to ensure it clears any bed material. For obvious reasons make sure there is nothing on the build plate that will get in the way of the print head.

The first thing I do after homing the head is re-mount the bed and then get the bed down/up to a sensible height. An example of when you need to do some serious movement this is if you change the bed to/from a glass bed from a resin bed. A resin bed is much thinner than a glass bed so you’ll need to wind the thing up/down as appropriate. But if its just re-leveling the same bed then it won’t be far off.

Secure the bed. Whether you plan to use tape, book spines (see this post) or spring clips, at this point, I’d just use spring clips and then replace them later on if you want to.

Disable the steppers. (on the control panel go to “Prepare” then click on “Disable Steppers”). This allows you to freely move the bed under the nozzle. Obviously wind the wheels so that the nozzle is clear of it. Make sure that the nozzle then can move all over the bed without touching it at any point.

Now we need to individually adjust each wheel so to bring the nozzle to within 0.2mm of the bed.

To get the height right the easiest way is to use a strip of standard 80gsm photocopier paper. Cut a strip about 2.5cms/1 inch wide. Standard 80gsm photocopier paper is about 0.1mm thick. So wind the bed so that the paper is not snagged but is <just> beginning to snag. Just so much that you can still slide the paper under the nozzle but it feels like it is beginning to catch on both the bed and print head.

Now with the paper still under the nozzle and held in place so it moves with the print head, I move the print head by hand across the bed and then move the bed back and fore while checking every few centimeters that the paper is not too loose or snagged completely. Adjust the wheels in turn until you get the same feeling from the paper all over the bed. Go over it twice just to check.

You will need to level the bed after every print although hopefully you should find (assuming the print has come off the bed without too much difficulty) the bed height stays pretty much in the right place after the initial set-up. But don’t take it as a given! Check it before you print again. Maybe though if you haven’t changed the bed type then you can just skip removing it before auto-homing.

Ender 3 Leveling the Bed: Self Leveling kits

If all that seems a bit of a faff and you have a few dollars/Pounds/Euros to spare then you can buy a self leveling kit.

Basically there are two.

The first self leveling kit was the BL Touch. This works fine with 8 bit boards and (I assume) 32 bit as well. You can find an example of a BL Kit on Amazon here.

If you have a 32 bit motherboards in your Ender 3 then you can use a CR Touch. Although CR Touch is more sophisticated than the BL Touch, it will NOT work with an 8 bit motherboard. See this post. You can check-out a CR Touch Kit from a reputable seller on Amazon on this link.

Currently I use neither. That is not because I don’t see their value. They both have amazing write ups. But as things stand I can live with the nausea of manual bed leveling. For the time being at least. But maybe in the future I’ll buckle down spend a few dollars/pounds. Then I ca stop wasting my time leveling the bed by eye!

How to Change Filament on Ender 3

This is just an aid-memoire regarding how to change filament on a Creality Ender 3 3D printer.

Changing/reloading the filament is pretty straightforward. But I know from personal experience that there are a couple of minor snags/irritants that can occur due to “economies” in the design of the Ender 3. Though it has to be said that for the money the Ender 3 is really good value. The latest version (far better than mine!) is here on Amazon.

Removing Existing filament.

Assuming the filament has not snapped in the Bowden tube then removing it is easy. Turn on the Ender 3 go to “Prepare” on the display then scroll down to either pre-heat PLA or pre-heat ABS. Select the one that is appropriate. (see more later in the post if you are using something a little more exotic like TPU). Then select “Preheat PLA/ABS End” There is no need to heat the bed up.

The pre-heat PLA on my machine raised the print head temperature to 190 degrees centigrade whereas the pre-heat ABS raises it to 240 degrees centigrade.

Opening the spring clip when you change filament on Ender 3
Pinch the feed head assembley spring clip to withdraw the filament

When the print head reaches temperature the filament can simply be pulled out. You need to pinch the spring clip on the entry feed to the Bowden tube so to release the pressure on the filament. Then with the other hand pull out the filament.

That’s it! This will obviously leave a small amount of filament in the print head. If you are going to use the same type of filament then imho the best thing to do is feed it in now. Use it to “push out” the last of the old batch. Which brings us to the first of my irritants with the Ender 3.


Feeding in new filament.

In an ideal world all you have to do is remove the old roll of filament from the hanger, put the new roll on it then push the filament in through the nozzle entry, through the spring clip, down the Bowden tube and into the print head.

But for me that rarely happens. The spring clip on the entry to the Bowden tube misaligns the filament and I (personally) have a devil of a job getting the damn thing into the Bowden tube. It is one of those jobs that needs three hands.

  • One to operate the spring clip
  • One to push the filament through
  • One (with a blade/spatula or whatever) to line the filament up with the entry to the Bowden tube so it goes in.

Sometimes I find that even when you get this far the filament then fouls on the entry to the Bowden tube!

My work round for not having three hands goes something like this.

I remove the Bowden tube from the feeder motor assembly. I do this by pushing the white ring in and then simply pull it out.

Then from the reverse side I feed in a small length (say 6 inches long) of filament and into the grip of the spring clip. Then I feed the new filament in. I try and snag it against the short piece so the short piece “leads” the new filament in through the entry hole to the Bowden tube.

I suppose you could try hitting it with a soldering iron to join the two together or whatever, but I find that usually with a couple of attempts the short length successfully leads the new filament into the Bowden tube aperture.

When it’s through, I feed it into the Bowden tube and re-insert the Bowden tube into the feeder motor assembly. Then it is just a matter of holding open the spring clip pushing the filament down the Bowden tube into the print head. Keep pushing gently and the new filament will melt and expel the old. You can watch the color change as it comes out. There will only be a few inches of waste.

How to Change the filament type on Ender 3

What if you want to change filament on an Ender 3 from one type to another. Say you wanted to go from using PLA to ABS or vice sa versa. Then there’s two ways to do it. (I’ve done both, but I now prefer the first option which is to change the nozzle).

The first is to change the extruder nozzle for a new one. Or of course, you can change it to one that has previously been used with the new type of filament you are loading. (See this post on how to change nozzle) Nozzles are cheap (see Amazon here) so this really is not going to break the bank if you need to fit a new nozzle when you change material.

But alternatively you can also simply feed in the new filament and displace the old. The only caveat with this is that obviously the filament in the print head has to be molten enough to get pushed out by the new stuff coming in.

If the original filament was ABS (molten from around 220 degC upwards) and you are pushing in PLA, heating the bed to 190 degC (That’s the Ender 3 setting for pre-heating the print head for PLA) is probably not going to get the remaining ABS up to a high enough temperature to allow the PLA to push it out.

But luckily there is a sweet spot where both ABS and PLA are molten. It’s around 220 degC.

So instead of using the “Prepare”→Preheat facility, go to “Control”→Temperature→nozzle. Wind the print head temperature up to around 220 degC.

When it get up to around there try gently pushing the PLA in and see if the ABS comes out. If it doesn’t then you can up the temperature a little and try again. Or of course, you can always just change the print head. Going the other way (i.e adding new ABS to a print head previously used with PLA) is less fraught as the PLA will be well molten at ABS pre-heat temperature (240 degC). Just use the same method.

Other filament types generally have temperature ranges very similar to PLA so they are less prone to difficulty. Assuming you are feeding them into replace PLA or vice sa versa.

Filament Types and Temperatures.

Here’s a list of rough working temperatures for a range of filament materials I’ve picked up off various places on the internet. Hopefully they are correct but caveat emptor!

3D printing Filament Operating Temperatures

  • PLA 200 – 230 degrees Centrigrade
  • ABS 230 – 270 degrees Centrigrade
  • TPU 205 – 300 degrees Centrigrade
  • PETG 220 – 250 degrees Centrigrade
  • PLA+ 210 – 235 degrees Centrigrade

These filament types all have different niches. But in many cases they also overlap for general use. I feel it is worth having a selection rather than just staying with PLA. Here’s the SunLU page on Amazon that gives a brief description of each filament type. Another Amazon supplier with a good range of both types and colors is Duramic 3D on this link.

Filaments generally tend to start going “runny” about 10 degrees below their minimum working temperature. So if you are pushing one out with another choose a temperature sweet spot that suits both.

But what if the Filament snapped in Bowden Tube?

So how do you change the filament on an Ender 3 when the filament has somehow broken in the filament tube? So that after pulling it out you leave a few inches in the tube at the bottom which blocks it?

You have to detach the Bowden tube at the extruder. Push the white ring in and hold it in. Then withdraw the Bowden tube with the other hand. Withdraw the Bowden tube from over the filament. Then when the filament is exposed simply pull it out of the hot print head.

There is a (BIG) warning attached to doing this. Make ABSOLUTELY SURE that when you refit the Bowden tube that it goes right back in as far as it can go. If you leave any space between the Bowden tube and the rear face of the extruder nozzle you seriously risk getting a blockage when you are half way through your next print. Any bit of debris in the print head <may> prevent the Bowden tube fully entering the chamber and butting up to the nozzle.

Personally I’d take the nozzle out and push the Bowden tube right through. This will flush any such debris out (see this post for how and why). But I suppose as long as you are sure that the Bowden tube really has gone all the way back in then you can wing it. If your Bowden tube gets frayed/damaged it is easily and cheaply replaced one example is this link on Amazon Two meters for $7.99 !! That should keep you going for about twenty years!

Anyway, writing up how to change the filament on an Ender 3 has turned out to be a long post. Much longer than I intended frist! But I hope it helps.

Ender 3: Changing the Nozzle.

On an Ender 3, changing the nozzle is easy. But it is also all too easy to foul up the filament feed by mis-aligning the nozzle to the Bowden PTFE tube channeling the filament into the nozzle. Here’s an earlier post on exactly this problem and what happens.

Why change the Ender 3 Nozzle?

If a nozzle in an Ender 3 that is only ever is used with (say) PLA and is never accidentally grounded on the build plate then it may last for years. But one grounding may (but not always) distort the exit hole and you may end up with a rough print.

At the end of the day nozzles are cheap. (here’s a good example on Amazon) You can buy better ones (like this on Amazon) but personally I stick with the cheap and expendable. If you have a suspicion that your print quality is suffering due to some nozzle abnormality then the best, cheapest (in both time and reduced print failures) and most productive fix is to change the nozzle.

The other reason people may wish to change the nozzle is when you change filament type from (say) PLA to ABS or TPU. Although you can flush the nozzle out in situ (I usually do) it may be easier to just change the nozzle for a new one. If you keep the swapped out nozzle (and label it!) you can of course re-fit when you want to go back to using the original filament type.

Some folk recommend that you change the nozzle every 3 months anyway. That’s irrespective of whether the print quality is degrading. But personally I only ever change it (sometimes) when swapping filament type. Or of course, when it get damaged by wear and tear.

Ender 3: Changing the Nozzle: Possible Problems.

Swapping the nozzle on an Ender 3 is straight forward and short of doing something catastrophic like cross threading it, risk free. But there is one gotcha (and… it got me! See this post) involving the mating of the nozzle to the end of the Bowden (white PTFE) feeding the filament into the print head. But more in a minute. Lets remove the existing nozzle first.

Removing the Ender 3 Nozzle.

When you received you shiny new Creality Ender 3 you should have found a number of cheap (but effective) tools bundled in with it. Included in this kit are two small spanners. One of these is a fit for the nozzle. There are also 3 hexagonal Allen keys one of which you will need to undo the two silver screws holding the fan unit on the side of the print head. Find your tools!

Remove the Filament

First of all remove the filament. The easiest way to do this is to turn on the Ender 3, select “control→temperaure→nozzle” and set it to your filament melting temperature (example 205 deg C for PLA) then go back to the info screen and wait until it is up to temperature. Pull the filament right out of the Bowden (PTFE) tube from the feed as it goes into the stepper motor. Then go back to control→temperature→nozzle and set it back to zero. Make sure you have moved the print head up the Z axis (prepare→move axis→z) so you can actually get at it easily with the bed getting in the way. Turn off the Ender 3.

Fitting the new Ender 3 Nozzle

remove these two small screws

With the correct sized Allen key undo the two screws holding the fan unit onto the side of the print head. Remove the fan unit. There is no need to disconnect anything electrical. Just (obviously) don’t have the Ender 3 turned on!


Gently pull off the rubber shield.

ender 3 print head rubber shield
The rubber shield around the nozzle

Notice when you take off the rubber shield how the nozzle meets up with it with just the tip poking though. It is rubber and it will tear if you are not careful. Be gentle.Do not forget to refit the rubber shield at the end!


A well used ender 3 nozzle. Often PLA can “cake” around it making it difficult to get the spanner on to remove.

Now we are ready to start changing the nozzle on our Ender 3. Using the correct size spanner undo the nozzle. DON’T forget you are working upside down! So when you place the spanner on the nozzle with the spanner handle to the left you need to push it forward NOT pull it back. Doing that will simply tighten it further. Just be gentle with it. It’ll come out fine.


Ensure the Bowden tube path is clear

Watch out! This is very, very, very important!

Push the Bowden tube through the print head until it comes out the bottom.

If you just fit another print nozzle you may well not meet the end of the Bowden (PTFE) tube flush. So first of all push the Bowden tube right down through the print head so you can see it coming out of the body of the print head where the nozzle will go. If it won’t go then you’ve probably got some debris in the pathway (old glob of filament or whatever). Gently but firmly keep pushing. It will come though. Then check that the end of the Bowden tube is OK. You can of course completely remove the Bowden tube to check it but it is still very important that you clear out any debris in the print head that might prevent the Bowden tube mating up cleanly to the end of the new nozzle.

At the end of the day the Bowden tube MUST fit flush and true to the nozzle end. Otherwise there will be grief and suffering.

Hold down the collar on the Bowden tube and pull it back up so you can screw in the nozzle. Screw in the nozzle.Be aware that some/most of the thread will still be showing. And do not over tighten it. Be aware it does not screw in that far when the print head is cold. On mine I reckon it’s about 1 and half turns in total. To get the nozzle properly into the heating element, you need to turn it on and re-heat the head to working temperature (say) 200 degC). Then you will find the nozzle will easily screw into the head. Just watch you don’t burn your fingers! Use a spanner! When its in then back it off half a turn.

Push the Bowden tube back down in again. Be SURE it has gone down to the nozzle. I.e as far as possible. Lock the Bowden tube in place with the collar at the top of the print head. Then finally go back to the nozzle and tighten it in that last half turn you backed off earlier.

Refit the rubber boot then refit the fan, and you are ready to reload the filament!

If you don’t get that Bowden tube to mate cleanly with the end of the nozzle you will have a void in between them. The hot filament will deform (corkscrew) into it and block the nozzle. But, only after a while. So you start off printing nicely then it all goes horribly wrong as the filament blocks. So make absolutely sure the Bowden tube butts up to the end of nozzle.

There is a great video on YouTube (Here) that goes through more-or-less the same process as this. If you are still unclear I’d recommend you watch it. (incidentally, I don’t know the guy. Neither am I an affiliate or whatever of his – it’s just simply great information).

A very good video describing the Ender 3 print head

Ender 3 Glass Bed.

Heavily used Ender 3 Glass bed
Here’s my Creality glass bed mounted using just two spring clips. It’s in need of a clean!

I was lucky enough when I bought my Ender 3 to get a Creality branded glass bed thrown in with the deal. Actually I think that this was really a sweetener due to the fact my Ender 3 has the old 8 bit processor running Marlin 1.1.x software not the new all singing and dancing Marlin 2.x supporting 32 bit processor.

Frankly though, I’ve not missed the 32 bit software upgrade (though that may be because I don’t have it!) For what I use the printer for, it has never been an issue being limited to Marlin 1.1.x. I don’t expect many other people would find it that limiting either. But obviously some would. You can though easily upgrade to 32 bit if you so wish. Here’s one advertised on Amazon here with several hundred 5 star ratings.

But I would not want to go without my Ender 3 Glass bed. While I’ve used the resin bed that also came with the purchase (mainly to see what it was like), I’ve found the glass bed much easier to use and particularly to clean! (here’s one for less than $20 on Amazon)

The Ender 3 glass bed is for obvious reasons much heavier and thicker than the resin bed, but even when poorly/weakly secured I have never (yet) had it move on me. Neither have I ever had a problem with bed heating.

My glass bed gets a bit of a hard life. I’ve used all sorts of different adhesives to ensure the first print layer sticks. I’ve used Pritt Stick (standard school glue – here on Amazon if you want) , Spray Mount (re-position-able Adhesive spray – also here on Amazon) to Hair Spray (I’ll leave you to find that one!). They all seem to work OK.

Currently I’m using (on the Glass bed at least) re-positional Spray mount. It’s quick clean and effective and it gives a really good adhesion. Maybe though it is a little too good in fact. It it tends to bake on. But after printing I’ve always been able to knock the print off the glass bed. It takes some elbow grease to clean it off the glass but I’ve found that it does come off eventually. But I wouldn’t use it on the resin bed (again anyway!). You can see below that the adhesion is perhaps a little too good and it has been a devil to clean the resin bed without damaging it.

Ender 3 resin bed is more difficult to clean than the glass bed.
Here’s my resin bed after using Spray mount to adhere the first layer of a print – that refuses to come off. It looks like I’m now damaging the plate so I’ll live with it as it is.

I’ve found that cleaning the glass bed especially when used with Pritt stick is a doddle. I take it off the Ender 3 and then using soap and water, or even cream cleaner. It comes up like new. Even using a mildly abrasive scouring pad has not damaged it. Whereas my attempts to clean the resin bed (as you can see) has been less successful. I don’t think I’ll try and get the remains off this resin bed. As I appear to be now damaging it. I definitely won’t be using spray mount as the first layer adhesive on the resin bed again either!

I’ve secured the glass bed to the build plate using the standard spring clips. Two appear to be fine. I’ve also used cut-down book bindings (see this post) . I’ve also simply taped it down with sellotape. All have worked. But the sellotape went a bit gooey due to the heated bed.

If you don’t have one, I’d recommend you get a glass bed. If though you are looking for a self leveling system be warned the CR Touch is incompatibe with the 8 bit Ender 3’s. More in this post.

CR Touch: Ender 3 Processor issues

I received a comment on an earlier post on this subject (here) by Matt who has an Ender 3 1.1.5 Silent motherboard. It appears that this board is incompatible with the (relatively) new CR Touch self leveling system. I’ll go more into processor identification below but this is what I’ve gleaned about the CR Touch self leveling kit. I hasten to add this is just what I’ve found out. I believe it is correct but I don’t have a CR Touch system myself.


The reason for Matts incompatibility is that it looks like the CR Touch is only compatible with 32 bit processor boards NOT 8 bit boards on the Ender 3. Most adverts for the CR Touch make this unclear or bury it in the small print. That’s if they mention it at all!. So people could easily spend the money and end up with something that simply won’t work with their system.

Here on the left is an Amazon advert that actually DOES clearly state that you need a 32 bit board. There are many other advertisers (for exactly the same kit) that leave this very salient fact out. Or at least obscure it.

If you have an 8 bit Ender 3 system and (like me) are happy with it as-is yet you want a self leveling kit then there is this earlier BL Touch kit also from Amazon (Here). Personally I still struggle along with a Mark One eyeball and a piece of paper (more in another post!). But I can appreciate that many would rather short cut the nausea associated with leveling the bed, spend a few Dollars and buy the kit.

Anyway. More on processor issues and identification

I’ve done two other posts on this subject here and here. So this is really just further explanation on what they already say. But here’s some more images and explanation. Basically if you are unhappy relying on the USB connector type as the identifier then you will need to open up the Ender 3 processor box. It’s only three screws. Then carefully lift off the cover (watch you don’t snag the fan) and have a look.

At the bottom of the street cred pile for an Ender 3 is the old 1.1.4 Atmel 8 bit processor board (like mine). Here she is in all her glory. Next is a close-up of the processor. The USB connector is a mini USB.

TCMUK still sell the 8 bit “Silent” board for the Ender 3

Then there is the 8 bit 1.1.5 “Silent” Atmel board. From this site I took this screenshot of the USB connector on the left. So it looks very much like the 8 bit 1.1.5 board also has a mini USB connector. Just like the earlier 1.1.4 board.

To directly address Matts issue regarding 8/32 status of a 1.1.5 board there is this Amazon advert that, though rather poorly worded, advertises an upgrade to a 32 bit board from the 8 bit “Silent board”. with pictures of both.

(As of the 27th Nov 22 the above advert is “out of stock” It looks like actually getting hold of a 1.1.5 board anywhere else as well is no longer possible. If for some reason you wanted one then I think you will be out of luck. So, in my humble opinion the best solution is to go straight to a v4.2.7 board like this one on Amazon. Looks like they are also about half the price the old 1.1.5 boards used to be too!)

Notice the difference between the two boards in the second image down in Amazon page. Although you can’t see it properly, (on the right hand side of each) notice the USB connector and the different foot-print. I.e I’d suggest that the 8 bit 1.1.5 board has a mini USB. While the 32 bit board has a micro USB.

If you are keen to utilize the CR Touch system (and I hear it is very good!) then it looks like you will need to upgrade to a 32 bit board like this one on Amazon. That’s if you haven’t done so already.

Hope that helps.

Chalkie.

Wordfence XSS Cross Scripting Error for Admin: Fix

I had had an annoying problem where I’d log into one of my WordPress sites, then attempt to change the side bar and remove (say) a block of code that pulls in an iframe from another site (i.e. Twitter or Amazon or whatever) I got blocked by my security Wordfence plugin with a XSS cross scripting error. The actual site works fine it is just the admin cannot change anything. I first fixed this back in 2020, then forgot about it. I then changed my admin URL (i.e. broadband provider) and it re-appeared. Now as a penance I’m writing it up.

A potentially Unsafe Operation Screenshot. XSS cross scripting error.
Each blocked widget entry gets one of these
Wordfence Blocked Attacks email snippet listing multiple XSS cross scripting errors
Yes. I tried several times! And it blocked each and every one of them

The Problem:
When I tried and change anything using Appearance → Customise in WordPress dashboard the item I want to change gets blocked with this “Potentially Unsafe operation” on the left:

Later I receive my Wordfence email outlining Wordfence activity and I get this sort of thing in the “Recently Blocked Attacks” section.

The IP address (blanked out in the “Blocked Attacks” image) is my own. Wonderful though the Wordfence plugin is (and it really IS wonderful!) it is blocking me from changing anything! Which is rather sub-optimal, although I can still post.

The fix is simple – when you know where it is in the Wordfence plugin.

Select the Wordfence top level menu item in the WordPress Dashboard. Then select the “Live Traffic” Tab. You will see a list of blocked activities. Identify the one that has your IP address on it and then click on the “eye” on the far right of the summary line.

Traffic Logging Snippet. Blocked Admin for XSS cross scripting error
Notice the “eye” on the far right under the “View” column

After you have clicked the “eye”, you then get this.

Expanded Traffic logging snippet detailing XSS cross scripting error
Here’s the expanded entry. You need to get to here then you can whitelist your own URL

Select the “ADD PARAM TO FIREWALL ALLOW LIST” Then you are done! Your false Wordfence XSS Cross Scripting Error should go away.

You can now check that this has been implemented (and also exactly who is allowed to bypass the firewall) by clicking on the “All Options sub-menu item in the Wordfence menu in the WordPress dashboard.

In the “Rules” section make sure “whitelist” is on. (It should be) Then go down to “AllowListedURLs” and expand it. Here you should see your newly whitelisted URL. You can turn it (and any other ones) on and off from this menu too. I did not need to log out/in for changing enable/disble to work but you may need to.

Anyway hope that helps.

Creality Ender 3 Nozzle keeps Clogging: Fix

I had a really bad two days with my Creality Ender 3 where the print would start OK but would after a while (say 10-30 minutes) the nozzle kept clogging so the filament would stop feeding. The drive wheel would be doing its best and trying (but failing) to feed the filament. The nozzle was blocked. So nothing would be coming out.

Here’s a typical fouled up print:

First layer of fouled up print – It got most of the way there!

Worse still, when I tried to figure out why, and reheated the filament to get it out of the nozzle I managed to pull out nightmare contortions like these. These were all variously stuck in the hot end and I only managed to get them out by reheating the hot end on each occasion, removing the PTFE tube and pulling (hard!).

This is a gold colored PLA filament. You can see how distorted it has become from being rammed into the print head with nowhere to go.

Nozzle Cleaning Did Not Help.

I variously tried cleaning the nozzle, then changing the nozzle. All to no effect. Incorrectly I began to suspect that there was something amiss with the filament I was using. In desperation changed both the bed temperature and the nozzle. At the higher nozzle temperature the thing at least got to the end of the print, though the output was ugly and obviously too hot.

I was at my wits end. Then I Googled it and came up first with this video from Creality, which largely answered my query. But the second video is even better.

Here’s the Creality video on Nozzle Clogging first:

The Creality Video which tipped me off that the problem was with the PTFE tube

If you remove the nozzle you should be able to push the PTFE tube right through the hot end. I began to get suspicious, so I wondered, when the nozzle is actually thee, how far into the hot end should the PTFE tube go?

The Definitive Video on Nozzle Clogging in a Creality Ender 3

Then I came across this magnificent video (below) by a guy called Nerys who made a large print head model to show what the problem was. (Both videos are worth a watch but this guy’s video is awesome).

This Guys video is so clear! He gives a brilliant description of the problem and exactly how to fix it blow by blow. He is a born teacher.

The end of my PTFE tube was worn and so it mated poorly with the back face on the print head (I have a suspicion it was even worse than this! I simply had not pushed the PTFE tube in far enough!).

One thing in particular that Nerys flags up is that the top entry grommet for the PTFE into the print head should NOT be fully tightened down until the PTFE tube has been installed. The last turn/half turn will tighten the PTFE tube snugly down onto the face of the nozzle.

After all that grief and suffering, I carefully cut a centimeter off the end of the PTFE tube (make sure it is a right-angle!). Then I fFitted it back as described by the Guy in the video. I tried again with saner temperature settings. I sighed with relief when it printed perfectly.

Ender 3 – Getting the 3D Extrusion to stick to the bed – Fix

This is one of those problems for me that comes and goes for no apparent reason. But sometimes I get really bad issues getting the 3D extrusion to stick to the bed. When it goes wrong the result is usually catastrophe.

Now (I think) I have a super-cheap and reliable method to get bed adherence. I (mostly) use a glass bed.

In the past I have used (with varying success) these methods:

  • Standard Pritt-stick type glues sticks. I applied it to the bed then levelled the lumps and bumps off with a warm damp cloth.
  • Hairspray. I have only used this occasionally with limited success. Usually when I was having bad problem getting adherence with Pritt stick style glues.
  • Thinned UhU type (cellulose) glue. This type of glue is now actually quite hard to come by. It does seem to work. But it is an absolute **** to clean off the plate. Arguably it is too good at adherence. You can damage the finished item just getting it off the plate.
So here is how I get a 3D Extrusion to stick to the bed now.

Just yesterday I was having a catastrophe. I was printing some name-tags for children of family & friends for the Xmas tree. These are, by their nature small size quite dainty. Dainty designs and getting the resultant 3D extrusion to stick to the bed really do appear to be mutually exclusive!

I’d reached to point where the only apparent way forward was to try something else. I thought about painting the glass plate I use. But with what? And for each print?

I thought about going down the road and buying some painters masking tape (I’d read somewhere that that worked).

Then (in mad inventor mode) I thought:

“If painters tape works – why not just plain paper?”

After-all plain A4 printer paper gets plastic (aka Lazer printer toner) to stick to it, so why not PLA?

I simply sellotaped a single (cut-down) piece of copier paper over the bed.

It worked first time, and every time after that. So far I have had no bad prints using it! ( except for one where I hadn’t levelled the bed properly – i.e. my cock-up).

Here’s my trusty Ender-3 Paper’d up printing (this time) a large name label. I’ve taken another photo below showing the size name labels that were causing me such grief.

Simply sellotape down a single piece of printer/copier paper over the bed. Works like a Charm!

The prints, especially the bigger ones do stick really well to the paper, to the point you have to cute away the paper from the print, but if you want to get rid of the paper “base” left on the print then soak it off!

Simple!

Hope it helps.

Using paper for bed adherence
Here’s the ones I did earlier along with the bigger one. Many more to do!

The rest of my posts on 3D printing can be found on This Link

FreeCAD Snap Package Font Problems: Fix

I recently went over to using Ubuntu 20.04 from 18.04 and my new FreeCAD installation is now a snap package rather than an installation built using the traditional apt-get install route. I’ve done this for no particular reason other than that is the way thing seem to be going and frankly I just went with the flow. I wanted to get the thing working rather than fuss over how it was installed. But I ran into some Snap package font problems.

I’d used the FreeCAD snap package for a couple of small test projects and all seemed well. Then I decided I needed to make some Christmas lettering on my Trusty Creality Ender 3. To do this all I needed to do was use the ShapeString tool to get the letters from a font on my system. I’ve done this before on Ubuntu 18.04 with a traditionally installed FreeCAD package (See this post). But on Ubuntu 20.04 I hit a road block associated with the FreeCAD snap package.

One of the purposes of the snap packaging format is to limit access to system files. I assume it’s for security reasons and also so the package is not dependent upon a particular system file. This means (as well as enhanced security) that a snap package for Ubuntu should work without issue on any other flavour of Linux as well. That’s the theory anyway.

One problem with this is that Ubuntu/Linux font files are usually in either /usr/share/fonts or /usr/local/share/fonts.

So neither of these system directories are available to the FreeCAD snap package.

Consequently when you try and set up the path to the font of your choice in the ShapeSting tool you will find that the only directories that are available (the rest are greyed out) are those under your home directory. So, in essence you cannot set up the path to the font! While you can actually manually type in the path into the ShapeString tool, when you hit enter you get this:

Screen capture of FreeCAD ShapeScreen font problem setting error
Notice I’ve set the path to /usr/share/fonts. It doesn’t like it!
ShapreString Font problem dialog FreeCAD
Here’s what it actually says at the bottom of the above screen. Yours may be different.

So, how do you access fonts for the ShapeString tool? Well, this below works for me, but I’d be quite happy for anyone to show me a better way.

Basically you have to make the fonts you want to use available from within the bits of the file system that the snap package can see, i.e. anywhere under the user home directory. I’d suggest that it’s best not to copy them directly into the snap package location as you will probably be updating the package sometime and the fonts will be lost if you do that. Instead create (if you don’t have one already) a dot fonts directory (i.e. /home/<user-name>/.fonts) and then copy them in there.

Example:

cd ~
cp -r /usr/share/fonts/msttcorefonts/ ~/.fonts/

So far so good.

Now, go to the FreeCAD snap setup and go to directory:

/home/<user-name>/snap/freecad/current/

In here make soft link to the new fonts directory

ln -s ~/.fonts fonts

Restart FreeCAD

Then when you come to setting up the path to the font of your choice in the ShapeString tool you can now select from anything you have copied into /home/<user-name>/.fonts via the link you have in the freecad setup.

i.e example: either:

/home<user-name>/snap/freecad/current/fonts/mstcorefonts/Comic_Sans_MS_Bold.ttf (or whatever)

or by the other route that the dialog box reveals which is to the current active package version (in my case that is version 22)

/home/<user-name>/snap/freecad/22/fonts/msttcorefonts/Comic_Sans_MS_Bold.ttf

Both of these (actually the same thing!) can be selected using the dialog box associated with setting the font which is triggered by clicking on the three dots next to the font path text box.

After doing the setup you can actually set a default font for the ShapeString tool too. So if you only ever (or mostly) use one font you can set it to that. Otherwise the font path in the ShapeString tool will be blank and need setting up everytime you use it.

Do this by first selecting Draft mode first. If you don’t do this first you won’t be able to set the path for the ShapeString default font.

Now go edit->preferences. You should see a dialog box with “Draft” as the last entry on the left. Click it.

Then select the “Text and Dimensions” tab

Then in the displayed window at the bottom set the Shapestring path to your default font using the three dot navigation tool at the end of the line.

That’s it. Now when you start the ShapeString tool it will load the default font, but you can still replace with another if you want.

I have to say I’m not entirely happy with this as a solution, but it works for me. I hope (failing finding a better solution) it works for you too. If you know a better way to deal with these snap package font problems, I’d love to know what they are.

NOTE: Evidently there is/was a similar problem with the LibreOffice snap, so these Snap package font problems are not just confined to FreeCAD. A suggestion (relating to the LibreOffice problems) was that before copying the fonts to the ~/.fonts directory you run:

sudo fc-cache -fv

This refreshes the cached fonts.

I don’t think that is necessary. Although I doubt if it will do any harm.

Transfer files to Ubuntu with Bluetooth? Here’s How.

So, you want to transfer some files from your phone to your Ubuntu PC using Bluetooth? So did I. In fact I’ve done this setup twice. Both times the painful way.

Some years after I’d solved it with my Moto G5, I forgot it was in my shorts. I went swimming with it. Funnily enough it didn’t seem to work too well (or at all) after that. So I bought a new Moto G10. For my sins (which are many) AND because I’d not written it up, I had to go through the whole grief and suffering again. So from the top. Lets start at the default. Bluetooth is off. Go to Settings. Select Bluetooth. You’ll Get to this screen.

Ubuntu Settings Bluetooth Turned Off
NOTE the barely visible switch in the task bar between “Bluetooth” and the “-“

Fine the barely visible slider switch in the task bar of the setting window slide it to on (i.e. to the right)

You get this

Ubuntu Settings Bluetooth Discovery
A list of discoverable devices appears. Here’s my new G10

Click on the box with the device you want to connect to in it. This pops up:

Ubuntu Settings Bluetooth Connect

Slide the switch by “Connection” to the right. Then you get a code to compare and affirm that appears on both the PC and the phone. Like this:

Ubuntu Settings Blutooth Code match
You need to hit “Confirm”. As I remember a similar box also appears on the phone and you have to confirm that as well.

But.. I Still Can’t transfer Files to Ubuntu with Bluetooth! Arghhh!…

So Now you have ensured Bluetooth is on. You checked that your phone is registered with Ubuntu.

But still the damn thing won’t let you transfer files to your PC from your phone!

Moreover you get one of those really “useful” error messages on your phone like “transfer failed” . If you dig a little deeper on your phone you get a somewhat expanded error message like “ transfer forbidden by target device” Which at least tips you off that the issue is with your Ubuntu box rather than the android phone.

The problem is trivially simple to solve.

Basically Ubuntu will not allow inbound Bluetooth file transfer UNLESS the Bluetooth settings window is open. Like this one:

Ubuntu Settings Open Bluettoh Settings
If this window is not open on the PC then you won’t be able to transfer in files from your phone.

Yes I know. Somewhat bizarre. But there it is.

And that’s it! Now you can transfer files to Ubuntu with Bluetooth from a phone (or whatever). Note: You have to “push” them from the phone. (i.e.instigate the transfer from the phone after the connection is set-up)

Just to make matters worse, on the (Android) smartphone I have, the Bluetooth option to transfer files outbound from the smartphone is not immediately visible when you hit share – it’s on the next line of icons below (i.e. just off-screen) those that are visible at the bottom of the picture (or whatever) you are sharing. You need to flick up the icons to access the Bluetooth icon. Just be careful when you do this that you don’t accidentally close the window as the two gestures are virtually identical.

Then to round it all off the file transfer takes forever. Its far easier/quicker to stick a USB cable into your phone and take the images off that way.

Hope that helps.

I must say, (Bluetooth connectivity – which should be, by definition, simple) drives me to distraction. I don’t plan going swimming with this phone for a few years so I am hoping these notes make sense when I come to change my phone next time.

The rest of my Ubuntu fixs/gotcha’s/howto’s are HERE

Processor overload with YouTube Videos (Ubuntu 18.04)

After endless Googling on this problem I noticed that other people had had similar issues with processor overload with YouTube videos. It appears to be relatively rare. But not unknown. I <think> I’ve found a fix. Or more like – A work-round. So if this helps you then great! But this is strictly WYSIWYG.

Let me start off by saying that this is an unsatisfactory fix. I hate it. It appears to work, but I am unhappy with it as it “gets round” the problem rather than solving it. But beggars can’t be choosers…

Continue reading

Ender 3 Filament Spool Holder Improvement

I love my Ender 3 but one thing I found quite sub-optimal was the lack of an appropriately sized spindle bobbin for the supplied spool holder. The result is the filament hangs off centre. The larger the diameter of the internal hole of the filament reel, the worse the problem is.

To me it looked like what was needed was a spindle adapter (or bobbin) which would make the spindle sit (more or less) at the centre of the reel. This would mean the filament tension would only have to cope with a radial load. Without the spindle adapter the feed motor has to in effect “lift” the reel to spool off more. Which leads to extra tension and potentially filament tangles as the filament “digs” into the pile on the reel instead of unreeling.

Continue reading