Talpadk’s Blog

October 4, 2020

An early unfair first comparison of the Radiona ULX3S and the Olimex iCE40HX8K-EVB

Filed under: Electronics,FPGA — talpadk @ 9:23 am
Tags: , , , ,

Why unfair?


Well when I obtained the iCE40HX8K-EVB it had already existed for quite some time the ULX3S I had just received the unit from the Crowd Supply campaign.
And Olimex therefore had lots of time to “perfect” the documentation Radiona on the other hand has not yet had the luxury of time yet.


Well I’m not really going to… The FPGA on the ULX3S is quite powerful and the board itself has more features as well, lets just call them different classes of products.


Well both FPGAs are supported by the open source command line friendly toolchains.
Xilinx years ago sort of cured me of any desire for using huge closed source applications for programmable logic.
Many thanks to the developers of yosys, icestorm, nextpnr, prjtrellis, writers of programmer software and GNU / libre-software in general.

Getting started documentation

I must admit that I’m not that impressed with the getting started experience.

The Radiona wiki links to what they call the ULX3S official site.
And at the time of writing this I find it somewhat lacking in getting started information.
Things I miss:

  • How to power the board (without frying it or having to look closely at the schematic).
  • Precompiled “hello world” bit streams for the different variants of the FPGA on there boards.
  • A simple guide on flashing said bit stream using the build in programmer on the board.

Eventually one does find the https://github.com/emard/ulx3s-examples, and gets around to compiling the toolchain for ECP5 (I previously only compiled it for ICE40)
However when trying to flash the bitstream (after changing the makefile to suit the 85F variant that I got)
The pre build binary of ujprog that comes with the example code fails with the message

ULX2S / ULX3S JTAG programmer v 3.0.92 (built Oct 3 2020 19:32:10)
Cannot find JTAG cable.

I have try to specify the port using -P and it does get a LED flashing but no blinking LEDs.
I also try to build ujprog from the sources, but I get the same massage including the version number.

Longer down the road I stumble across https://github.com/q3k/ulx3s-foss-blinky.git which from the get go targets my variant of FPGA (let doubt that I just compile the bitcode the wrong way)
It uses OpenOCD to do the flashing and best of all it WORKS ūüôā

The OpenOCD flashing does seem to be a bit slow though… So I keep looking and finds a manual of sorts it has a list of programming options and even a description of how to power the board.
The list contains a different programmer openFPGALoader that seems to have more resent updates than ujprog, and the schematic does have a note about them changing the wiring of the programmer in a revision of the board.
Compiles the code, fingers crossed that they have updated it to match the production PCB…

Success 2: openFPGALoader –board=ulx3s bitstream.bit also works


Is the current documentation a bit rough around the edges? Probably yes.
Is the board amassing?
Probably also yes…
I mean the FPGA is large enough to hold an entire Amiga “implementation”.
The quality of the hardware looks nice too.
And the board contains an integrated programmer and a selection of peripherals to keep me busy for a while.

Would I recommend the board… Well I haven’t spend enough time with it just yet, but it does seem likely.

If you do get the 85F I would recommend the ulx3s-foss-blinky as a hello world.
And if you have a production PCB i would recommend checking out openFPGALoader for flashing the bit stream.

September 13, 2020

How to prevent Microsoft Flight Simulator 2020 from bsod when started on a virtual Windows PC using KVM

Filed under: Misc — talpadk @ 6:56 am
Tags: , ,

I assume you already have a working virtual machine that uses pci passthrough and that it works just fine with other games.

BUT very time you start up MS Flight Simulator 2020 Windows crashes with a blue screen of death.
It took me some time to figure out, so I’m writing this in the hope that it saves some other poor souls time.

The fix is quite simple you need to give the option “ignore_msrs=1” to the kvm kernel module.
Create the file “/etc/modprobe.d/kvm.conf
Containing the line “options kvm ignore_msrs=1
And reboot the host.

See: https://wiki.archlinux.org/index.php/QEMU#Certain_Windows_games/applications_crashing/causing_a_bluescreen for a slightly more in depth explanation of this.

January 4, 2015

Printing in PolyProlylene

Filed under: 3D Printing — talpadk @ 6:43 pm
Tags: , ,

Bowl printed in PP

PP bowl printed on a piece of cutting board

I recently purchased a small sample of white polypropylene (PP) plastic from a shop in China.

While it was relatively expensive at ~$11 for 200g worth of plastic it allowed me to try out printing in PP without buying an entire spool of filament.
And since it isn’t supposed to be the easiest thing to¬†print due to a thermal contraction that should make it more warp prone than ABS and additionally is slightly slippery and doesn’t stick that well to other materials.

You may then ask why I would want to attempt to print in PP then, after all PLA prints just fine… well sort of anyway.

Polypropylene is/has the following features:

  • Relatively heat resistant, plastic handles on dishwasher safe cutlery are for instance often made of it.
  • Good chemical resistance.
  • Handles bending and flexing relatively well, living hinges can be made of it.
  • Is relatively soft, not always a good thing.

Well back to the printing business…

For the experiments I used my trusty RepRapPro Huxley with a smaller 0.3mm nozzle more on that later.
Yes I really should get that Mendle90 build, that would have allowed me to borrow some 3mm PP welding rod from work.

Anyway I’m by far not the first to print in polypropylene, but as with NinjaFlex I though it could use another post on the internet about the material.(Some links to “prior art”: RapMan wiki and a forum post)

While it seemed that PP and especially HDPE are good candidates for the print bed I had to try out polyimide and some generic blue masking tape as well.
As I expected they didn’t seem to work too well for me. But didn’t experiment too much with them.

I there for proceeded and bought some cheap plastic cutting boards from Biltema.
They don’t specify the type of plastic but they don’t feel very much like PP so I assume they are made of HDPE.

Once cut to size I actually managed to print unheated onto the 5mm thick sheet of plastic!
Some of the prints actually stuck too good to the print bed and got damaged while being removed.

I also encountered some problems with jams/the plastic coiling up inside extruder.
This led me to increasing the extrusion temperature to 235C and reduce the speed down to 15/20 mm/s for the perimeter/infill.
In an attempt to reduce the print bed adhesion I used a lower 225C for the first layer.

In hindsight increasing the temperature might not have been necessary, at least when manually pushing PP@235C and PLA@215C the pressure seems to be in the same range.
The extruder problems may simply be caused by the PP filament being softer than PLA.
Reducing the speed print might have been enough.

As some of the prints had left thin layers of PP on the print bed surface and new prints stuck annoyingly well to those spots I decided to try to sand the surface.
This removed both the PP residue and the grid of ridges in the plastic due to it’s cutting board origin.After this the surface seemed to be less problematic with regard to local over sticking.

I have yet to attempt to heat up this print surface, as I have previous had bad a experience with an experiment using a SAN sheet that warped badly when heated.
Besides it actually looks quite promising to use the print bed unheated.

While the chopping board isn’t that bad or expensive it is 5mm thick which is too much for my bulldog clips to handle.
I therefore looked for alternative sources of PP and PE.

The next experiment involved plastic wrap.
Here in Denmark PVC based warps have fallen out of favour and been replaced by PE based products (Assumed to be LDPE as it is soft).

The wrap was applied to a mirror surface and clamped onto the regular print bed.
The first unheated print had way too much warping.
I then cleaned the wrap using rubbing alcohol (which visually roughened the surface a little) and may have heated the bed to 90C.This resulted in a slightly better print but not quite as good as the chopping board.
Plastic wrap may be promising but I quickly stopped playing with it as it would probably have to be glued to the glass which would complicate the process.

PP printed on tape

PP printed on tape

Next up was packaging tape.
At least some of it are made of PP, biltema has some brown tape that is I did however just use some clear stuff I had laying in the drawer.

The first unheated on glass attempt had too little adhesion.
I then roughed the surface using a scouring pad and heated the bed to 70C which made the part stick relatively well to the tape.

Thoughts and notes:

  • Running the extruder at 235C might be too warm (stringing in the bowl print)
  • Maybe the glass surface conducts too much heat away too fast, might be why the cutting board sticks so well unheated?
    Perhaps experiment with a more insulating/lower heat capacity base material.
  • For flexible/soft materials I expect it is better with a thicker filament as it is harder to curl up inside the extruder
    (Note to self: Find time to build that mendel90)
  • Also for softer materials I probably ought to switch to my 0.5mm nozzle.
  • Tape based print bed materials have an advantage over solid ones, if the print is really stuck pealing the tape off might help to remove the part without damaging it.

April 20, 2014

Measuring printbed tempeartures on a RepRapPro Huxley

Filed under: 3D Printing — talpadk @ 4:13 pm
Tags: ,

I have finally gotten around to measuring the surface temperature of my Huxley.

Temperature as function of set-point

Temperature as function of set-point

Method and instruments used

For measuring the temperature a Agilent U1233A with a U11186A (k type thermocouple) has used.

The ambient temperature has measured by waiting for the display to settle and the taking a readout.

The heat bed temperatures has measured on top of the aluminium print surface with the polyarmide tape left in place.
The thermocouple was held in place by another piece of polyarmide tape.

The thermocouple was left on the print bed for 1 minute for the temperature to stabilize, the temperature was then measured on¬† the multimeter using the “avg” function after a 2 minute sampling period.


The temperatures were measured at the centre and approximately 1cm from the edge.
The center temperature was measured an additional time at the end of the measurement cycle.
The print bed was in its forward position with the print head to the left at the end stop (cooling fan running)

The ambient temperature was measured as 22.1C at start of the surface scan, and 24.4C at the end.
The heat bed has maintained at 85C using the 3d printer firmware.

NA 71.2C 75.8C
77.6C 71.1C
 75.6C  77.1C  72.8C

After this the thermocouple was reapplied using a fresh piece of polyarmide tape at the centre of the print bed and left there.
The print bed set point was then reduced and the surface temperature measured.

Set point [C] Measured [C] Percentage
85 76.2 90
70 63.1 90
55 50.2 91
40 37.8 95


Some of the variances in the measurements across the bed might be related probe mounting relative to the surface and cooling to ambient.
Using a piece of foam or another insulator might improve this.
The lower measurement points may simply be caused by a bad thermal contact to the print bed.
Heat sink compound could perhaps have alliviated some of this as well (and made a lot of mess).

Also even though the measurements was taken as a 2 minute average, the temperature swings of the heat bed regulation may have contributed with some noise.

Also a thermal camera would have made this much easier and quicker, too bad they are so expensive.
(And that Fluke VT02/VT04 visual thermometers has such a bad resolution)


I would consider the bed temperature constant across the print bed within the uncertainty of my measurements.

At “higher” temperatures the surface temperature seems to be roughly 90% of the set point.

March 22, 2014

A fast and beautiful terminal

Filed under: Misc — talpadk @ 11:31 am
Tags: ,

xrvt-unicode/uxrvt has long been my favourite terminal, it is fast and it supports faked transparency.

rxvt terminal with transparencyOne problem with using a darkened background was however that some terminal colour simply were bit too dark.

After a quick googling and short man page reading it was however clear that this can actually easily be resolved.
Additionally I can store some extra settings making my keyboard short cur for launching the terminal nice and simple.


sudo apt-get install xrvt-unicode 
sudo apt-get install tango-icon-theme

The last line is only for getting the terminal icon, and is optional if you comment out the iconFile resource

Configuring rxvt-unicode

In the file ~/.Xdefaults add the following lines:

!===== rxvt-unicode resource definitions =====!
!The number of scrollback lines
URxvt*saveLine: 5000

!Add fading for unfocused windows
URxvt*fading: 33

!Specify the icon for the terminal window, requieres the "tango-icon-theme" package
URxvt*iconFile: /usr/share/icons/Tango/16x16/apps/terminal.png

!Transparency setting
URxvt*transparent: true
URxvt*shading: 25
URxvt*background: Black
URxvt*foreground: White

!Colour setup for the darker background
URxvt*color0:  Black
URxvt*color1:  #ffa2a2
URxvt*color2:  #afffa2
URxvt*color3:  #feffa2
URxvt*color4:  #a2d0ff
URxvt*color5:  #a2a2ff
URxvt*color6:  #a2f5ff
URxvt*color7:  #ffffff
URxvt*color8:  #000000
URxvt*color9:  #ffa2a2
URxvt*color10: #afffa2
URxvt*color11: #feffa2
URxvt*color12: #a2d0ff
URxvt*color13: #a2a2ff
URxvt*color14: #a2f5ff
URxvt*color15: White

!Colour notes from the man page
!color0       (black)            = Black
!color1       (red)              = Red3
!color2       (green)            = Green3
!color3       (yellow)           = Yellow3
!color4       (blue)             = Blue3
!color5       (magenta)          = Magenta3
!color6       (cyan)             = Cyan3
!color7       (white)            = AntiqueWhite
!color8       (bright black)     = Grey25
!color9       (bright red)       = Red
!color10      (bright green)     = Green
!color11      (bright yellow)    = Yellow
!color12      (bright blue)      = Blue
!color13      (bright magenta)   = Magenta
!color14      (bright cyan)      = Cyan
!color15      (bright white)     = White

The last comments can of course be left out but is handy if you need to find a particular colour that you want to change.

Also adjust the shading resource to your liking.

After saving the file you may start the terminal using urxvt or rxvt-unicode and enjoy it fast and good looks.

February 21, 2014

Antialiased openscad rendering

Filed under: 3D Printing — talpadk @ 10:48 am
Tags: , , , ,

OpenSCAD rendering

Std. 512x512 OpenSCAD rendering

Std. 512×512 OpenSCAD rendering

Recent versions of OpenSCAD is capable of rendering objects/assemblies to images.
To the right there is an example of the default 512×512 image quality produced by the command:

openscad -o render.png assembly.scad

Below it is an anti-aliased version of the same scad file.
I used the common trick of generating an oversized image and downscaling it.
It was created with the following two commands:

openscad -o render.png  --imgsize=2048,2048 assembly.scad
convert render.png -resize 512x512 render.png

If you update your project renderings using a makefile/script I don’t consider it much of a hassle considering the improvement in image quality.
Also at least on my laptop with the currently relativity simple scad file rendering is still fast.

2048x2048 OpenSCAD render downscaled to 512x512

2048×2048 OpenSCAD render downscaled to 512×512

In case you are wondering the assembly is a new CNC mill I’m designing.
Which hopefully is an improvement over the last design.

The old design is available HERE
The new design is being created HERE

Unlike the old design the new one is being pre-assembled in openscad, hopefully preventing having to print parts that only fitted together in my head, saving both time and plastic.

Both designs are hosted on Cubehero, my favourite site for sharing designs on.
It comes with build in version control though git (it also has a web interface for “kittens”)
Wil that runs the site is a friendly and helpful guy, and it is not bogged down with stupid End User License Agreements like another site…
I highly recommend it…

October 10, 2013

3D printing using Ninja Flex filament

Filed under: 3D Printing — talpadk @ 7:53 pm
Tags: , ,

Yesterday I¬†received some of the¬†relatively new “Ninja Flex” filament sold by¬†http://www.fennerdrives.com/¬†

As the internet doesn’t seem to overflow with print reviews / settings for it yet I decided to post some words about it.

NinjaFlex Sapphire 1.75mm

NinjaFlex Sapphire 1.75mm

The Filament

It is always difficult to measure a soft material but using my caliber I measured the diameter to be 1.75mm as it is supposed to.
The filament also seems to be nice and round.

I ordered the “sapphire” version of the filament, and it has a nice (mat) blue color ¬†which turns glossy when printed.
It is also slightly translucent when printed thinly.

The filament is very flexible (I can tie a tight knot on it without it breaking)
The filament is also elastic but not as much a a regular rubber band… perhaps 5-8 times harder if I should make a guess.

The material is not known to me, but I strongly suspect it to be polyurethane (PUR) with a surface coating/treatment to make it less sticky.
Fennerdrives already produces PUR belting  which have been used in 3D printing prior to this material appearing and due to the mat to glossy change.
(Update: it has been confirmed that it is polyurethane)

The Fennerdrives recommended settings are:

Recommended extruder temperature: 210 – 225¬įC
Recommended platform temperature: 30 – 40¬įC

The¬†filament¬†isn’t¬†exactly¬†cheap I¬†would¬†say roughly 3x the cost of PLA/ABS including shipping compared to the cheap PLA/ABS I normally buy.
Then again soft/specialty¬†filaments doesn’t seem to come cheaply normally.
(Actually a lot of the cost comes from the somewhat expensive USP shipping)

Fennerdrives does ship both from the US and the UK, living in Denmark (inside the EU) this is a big plus for me.

3D model for the rubber feet

3D model for the rubber feet

The test prints

As I’m currently designing and building a tabletop CNC mill I thought that I might as well print some rubber feet for it.

The print isn’t necessarily the simplest one to print due to the outwards sloping unsupported¬†¬†walls.
However the angle is quite close to vertical and wouldn’t normally be causing problems.

The 3D model was created using FreeCAD which is my preferred open source CAD package.

I used Slic3r for generating the G-code.

And my printer is a RepRapPro Huxly which has a bowden extruder which might actually not be ideal for extruding a soft and springy filament.

Print 1

Was done using my regular PLA/ABS profile.

I had to abort the very first attempt as the filament wasn’t printed¬†continually.

  • I increased the extrude temperature¬†from the low temp that felt right while manually extruding the filament
  • Reduced the speed using the M220 command
  • And upped the heat bed temperature to 85 deg C

Much to my amazement the rubber foot actually printed sort of  okay.
It was however sticking so hard to the “Kapton” tape that removing it actually pulled the tape off the print bed!

Prints 1 though 4

Prints 1 though 4

Print 2

I then tried to create a specific profile for printing the rubber filament.

  • Reduced the printing speeds to avoid having to scale them using the M220 command
  • Removed the “Kapton” tape as it had become wrinkled any way
  • Printed without having heat on the bare aluminium print bed.

It printed with roughly the same quality at the first print but was very very easy to remove.

Print 3

I noticed that the hot end¬†seemed quite “laggy” probably caused by the flexible nature of the filament and i therefore made some additional changes.

  • All print speeds were set to 15 mm/s to avoid having the extruder changing speed
  • Retract was disabled, again to keep a constant pressure in the hot end
  • “Skirt loops” was¬†increased¬†to 4, to give the hot end more time to build up a constant pressure.
  • Infill was reduced from 50% to 0% to see if the vibrations caused the surface defects
  • The hot bed was set to 40 deg C

Just after starting the print I realized that setting infill to 0% would cause some parts to be printed in mid air with nothing supporting them from below.
Out of curiosity I did however allow the print to continue.

The printer managed to print the part¬†despite the fact that is was¬†“unprintable”…
Also the surface finish was very satisfying.

Due to the 0% infill the part was slightly softer as was to be expected

Print 4

I don’t like printing the impossible as it may or may not¬†succeed I made one small change

  • ¬†I changed the infill back to 50%

I’m pleased to report that the surface finish seems to be just as good as before.

Printer settings

Please keep in mind that  printer settings varies from printer to printer and that the one described here may not be optimal even for my own printer.

The following list is semi sorted by what “I think is probably the most important settings”

  • No retract
  • Uniform print speed (of 15 mm/s)
  • Multi loop skrit (4 loops)
  • Hot end temperature 240 deg C
  • Print bed temperature 40 deg C
  • Travel speed 100 mm/s
  • Extrusion width 0.5 mm with a 0.5 mm nozzle
  • First layer 50% (might actually be a bad idea)
  • Layer height 0.3 mm

Again while reading this keep in mind that I haven’t played very much with the temperatures.

I had some undocumented failures after print 1 where the extruder/hot end seemed to jam and I haven’t dared reducing the temperature again as I needed/wanted some functional prints.
The problems may however be related to too fast extrusions, filament loading and or the filament being deformed by the retracts.

My prints was stringing¬†slightly¬†internally lowering the temp may be able to reduce this…



  • It has been confirmed by the friendly customer support at Fennerdrives that the material is actually polyurethane.
  • Even without any heat on the hotbed it still sticks very very well to “Kapton”

May 17, 2012

Fixing the colours of youtube videos

Filed under: Notes — talpadk @ 8:20 am

Before and After

I can’t claim to have figured this out by my self…
Source link

EDIT: For whoever had the problem with blue video output – You don’t have to deactivate hardware acceleration. When using Nvidia drivers and VDPAU you should locate libflashplayer.so and run the following command in its directory:

sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so



locate libflashplayer.so
Mine were located in: /usr/lib/flashplugin-nonfree/

April 7, 2012

X11 tips and tricks

Filed under: Misc — talpadk @ 11:17 am

Useful commands for X11

Welcome to this short summary of useful commands for X11.
I have written it to avoid having to resort to googling next time I forget Xephyr.
Also it might be interesting for others as well…

Servers inside your X11 server

running xoo

xoo with a ipaq3800 skin

Why would you want to run a X11 server on your X11 display

Well for starters you might want to try out your UI on a device with a lower screen resolution than your development machine.
You might also want to code an application running at a different colour depth than you desktop, maybe a rotozoomer in 16bit ūüėČ
You may also simply want to try out a couple of applications on a low res. screen prior to buying a table with a low res. screen…


A wrapper for xnest and Xephyr that allows one to create a skinned X11 display.
You can even have working buttons that you can click.

sudo apt-get install xoo


Haven’t used it myself.
As far as I know Xephyr has some advantages in the supported extensions over xnest

sudo apt-get install xnest


Based on the kdrive xserver supporting extensions such as render and composite.
xnest package actually recommends this package over it self…

sudo apt-get install xserver-xephyr

Utilities and tools

Xpra aka. “screen” and turbo for X11 applications

Screen is a wonderful tool for command line tools.
Xpra gives you the same capacity to leave the program running on the remove even if you close/losses the connection.
Also xpra “compresses” the stream of X11 commands by using a different protocol than X11, reducing the problems caused by low latency connections.

sudo apt-get install xpra

March 10, 2012

HP Proliant N40L Filter

Filed under: Uncategorized — talpadk @ 1:32 pm

I recently bought a HP Proliant N40L “server” as an upgrade to my QNAP 409.

And as with my QNAP I would like a filter that prevents most of the dust in my living room from entering the Proliant.
Before I build a filter out of a piece of cardboard and some paper towel for the QNAP I have once had to vacuum it due to a slight build-up of dust.
After the filter the inside remained a lot cleaner and I only had to clean/replace the filter, a lot safer and easier than cleaning the whole thing.

If some paper towel works for a QNAP then why not a Proliant?
Anyway here is a tiny How to “build” a simple and cheap filter for a Proliant N40L

First you need to remove the plastic that covers the door.

In order to do that you need to remove the lock this involves: Removing the screw holding the metal “bar”, then removing the nut that holds the locking mechanism in place.

You can now remove the plastic covering the metal door by carefully releasing the thee plastic hooks at the top of the door.

Next you need to cut a 19×14.5 cm piece of paper towel.

I removed half the layers of paper to keep the pressure drop across the filter low.
Last time around I used paper towel with only two layers which was much easier to separate than the 4 layer stuff I used this time…

Now you need to tape the paper towel onto the outside of the metal door.
If the Proliant is running and the door is closed the paper will be held in place by suction, making it a very easy job indeed.

Cut a hole in the paper towel for the locking mechanism.

Put the plastic covering back on, hiding the filter.

Reinstall the locking mechanism.

Close the door and admire your handy work while drinking your favourite beverage.
(Beer can be used during this step)

Next Page »

Blog at WordPress.com.