uRADMonitor KIT1

About a year and a half back, while watching a mailbag clip from EEVblog, I learned about the uRADMonitor project by Radu Motisan.

The idea was to build a network of monitoring devices all around the globe that would measure radiation levels and display the results on a global map.

I noticed that there existed no data for Greece, so I thought I would fill that gap in the map. I enquired about a uRAD measuring unit but realized that it was kind of pricey (~$200 for a finished unit) so decided to wait for the Indiegogo campaign that had already been announced.

The campaign ran successfully, so I ended up owning a uRADMonitor KIT1. These are the contents of the kit:


The smaller components come nicely sorted and taped to a piece of paper:


The PCB itself is of typical quality:


You might notice that there is no silkscreen detailing the names of the components. I hope Radu changes that in future revisions of the KIT1.. It would make building the kit a lot easier.

The kit comes with a pretty nice manual. In the manual among other useful info you can find a parts placement diagram:


..and a BoM:


You will notice that I have added a couple of transistors to the bottom of the BoM. They appear to have been left out of the BoM by accident. No biggie.

To actually build the kit one has to correlate info from the parts placement diagram and the BoM. It’s not really difficult to do, but it might trouble a novice in electronics.

We start by soldering on the lowest-profile components. That means the resistors, the diodes, the inductors, the ceramic capacitors, the IC’s socket, the crystal and the push-button.
We continue with the transistors and the voltage regulator IC. Take care to follow the instructions here – R7 should be left open (no component) and R13 should be shorted.
Next up is the on/off switch and the terminals that will hold the Geiger tube.
We then move on to the piezo speaker (be careful, it is polarized!), the pin headers for the display and the ethernet board and the power input jack. Regarding the ethernet board, you will need to take care to mount it properly on the first try because it will be soldered in place. You are supposed to mount it in such a height and angle so that it is perpendicular to the main board:


You can power the board with the supplied power supply or any 5VDC power supply. The power switch turns on when it is toggled towards the Geiger tube:


The Atmega328 that comes in the kit is already pre-programmed with a unique identifier for your unit so all you have to do is connect the kit to your router with an ethernet cable and it should get an IP from your DHCP server. Once that is done, it will automatically appear on uradmonitor.com:


Here is my unit powering up:

uRADMonitor may have begun with measuring radiation levels but it is evolving into a more diverse platform, measuring several other pollution factors. I’ll be happy to incorporate more sensors into my KIT1 in due time.

Dimdim vs. The Ball Screw

I know what you’re thinking. What the heck is a ball screw and what am I doing with one.

This is a ball screw, complete with ball nut and supports:


What a ball screw does is convert rotational motion (like from a motor) to linear motion (movement, like front-to-back). Looking at the picture above it is pretty simple to see how that works.

The ball nut contains a number of ball bearings that are used to minimize friction and pretty much eliminate “backlash” (slop).

The screw rotates, but the nut is bolted on to some other surface so it can not turn. Instead it “travels” along the length of the ball screw.

I know that so far I haven’t really given you much useful info, at least nothing that you can’t find on Wikipedia, but bear with me.

Ball screws can get very expensive, if you buy them from the local market, so I opted for a Chinese one off of Ebay. The upside is the cost – the downside is the varying build quality. This particular ball screw had one issue: One of its ends was a very tight fit into the support’s bearing and when I say very tight I mean that I actually had to hammer it in. I know, not the best thing to do to a precision mechanical part, but that is what I had to do. Problem is, the next day I realized that I had forgotten to put in my nut housing. As Murphy would dictate, to put it in I would have to disassemble the tight side of the support. After some swearing and kicking of things, I began to examine my options. I could hammer the ball screw out of its support but I didn’t feel like putting the bearings through yet another ordeal. My other option was to unscrew the ball nut, put in the nut housing and then screw the ball nut back on. Sounds simple, right? Wrong! The problem is the bearings inside the ball nut. These bearings have no support. There is nothing keeping them from dropping out of the ball nut once I have taken it off the ball screw. Knowing that, I looked for a way to put the thing back together properly. Sure enough, I came across this video:

Everything shown on this video is spot-on. You should definitely count your balls and split them into groups of equal number of balls. Getting the first set of balls in is pretty easy. The problems start once you have completed the first set. Now you have a somewhat functioning ball nut. It will rotate with one set of balls, but you need to put in the other sets too.

2016-03-23 19.33.39

When you try putting in the second set of balls, you will realize that you can not. The machined end of the ball screw is blocking the way. You need another strategy.

I looked far and wide for a solution (ok, I Googled it for like 10 minutes). What you need is a tube that has the proper outside diameter to keep the balls supported inside the ball nut, but also has a proper inside diameter to allow the ball screw’s end to go through it so that it can enter the ball nut.

Some people went as far as machining new parts to aid in this procedure. I did not have that luxury, so I looked around the house for a proper tube. I came close with an old flashlight, but its diameter proved to be slightly too big. By that time I was beginning to regret ever having unscrewed the ball nut, but then it hit me: All I had to do is wrap some paper a few times around the shaft and use some tape to make a custom tube.


I then inserted my tube into the ball nut and proceeded to feed the balls. I did the first set, then the second, and then the third. I had to be careful since the tube was flexing a bit. Still, I got it right on the first try.

2016-03-23 22.30.50

Then I took the ball screw and inserted it into the ball nut with my tube still in it. I began screwing in the ball nut, until the tube came out the other side.

2016-03-23 22.31.53

That was it! My ball screw was as good as new!

So, to summarize, if you have to take a ball nut off a ball screw, prepare yourself for some tedious work putting it back on. Do make a paper tubing. Learn from my experience.

Fixing startup issues with Arduino DUEs

If you’ve had a lot of Arduino DUEs go through your hands (or if you are just unlucky), chances are you’ve come across at least one that does not start-up properly.

The symptom is simple: you power up the Arduino but it doesn’t appear to “boot”. Your code simply doesn’t start running.

You might have noticed that resetting the board (by pressing the reset button) causes the board to start-up normally.

I had come across such a board a while back, and had thought to myself “cheap generic, probably faulty” and had just put it aside. At ~13€ it was no big loss.

A few days ago a fellow tinkerer (thank you Alex!) alerted me to a fix for this problem.

It appears that the problem was first spotted on Freetronics’ forum and was dealt with swiftly.

The problem occurs only on some DUE boards and is due to some undocumented behaviour of the ATSAM3X8E processor combined with the behaviour of some MOSFETS installed on the DUE boards. So its occurence is largely a matter of luck.

The fix is simple: you just solder a 10K resistor across the top of this mosfet:


This is a 10K 0805 resistor that is about to be soldered:


..and after soldering:


The discovery of the problem prompted a new revision of the reference design by the Arduino team.

This is what the Rev 2’s relevant part of the schematic looks like:


and the PCB:


And this is what Rev 3 looks like:



You will notice a new component, R99, plus the mosfet is now mounted vertically.

So, if you are shopping for a DUE, look for one with this mosfet mounted vertically, just to be on the safe side.

Universal Signal Isolator Shield: Rev. 1.2

Since there has been a lot of interest in my Isolator shield these past few months, I have been optimizing its design.

The result of this optimization is this PCB:
It’s called “the Rev. 1.2”.

Nothing major has changed. The pinouts are still the same, the major components are the same, the functionality is essentially the same.

The changes are as follows:

  • New SPI header. It just passes through the SPI signals, nothing more. It does not connect to anything on the board.
  • New SPI_CS header. Useful only if / when connecting SPI peripherals.
  • Reset button. Because you never know..
  • New circuitry for the POWER_RELAY header. It now uses a MOSFET and it includes a diode for the reverse current coming back from the relay’s coil.
  • Decoupling cap for the IR receiver. Not absolutely necessary, but good to have.
  • More decoupling for the DC_UNR input.
  • Ground planes. Lower Arduino noise, at least in theory.

Here is the updated parts placement:

And this is the updated BoM:

USI Bill of Materials, Rev. 1.2
PCB Part Value Notes
U1 24LC256 SO-08 EEPROM chip
U2 Si8605 SOIC-16 I2C Isolator
U3 MCP23008 SO-18W 8 input/output port expander
U4 Si8642 QSOP-16 Serial port isolator
U5 ADUM1250 SOIC-8 I2C Isolator
Q1 BC856, BC808 or other equivalent PNP SOT-23 TFT backlight control
Q2 BC856, BC808 or other equivalent PNP SOT-23 port expander transistor
Q3 BC856, BC808 or other equivalent PNP SOT-23 port expander transistor
Q4 BC856, BC808 or other equivalent PNP SOT-23 port expander transistor
Q5 AO3400 or other equivalent N-Channel MOSFET SOT-23 power relay mosfet
B1 Bridge rectifier 1A DB107 DIP-4
C1 1000uF 16V
C2 100n 1206
C3 100n 1206
C4 100n 1206
C5 100n 1206
C6 100n 1206
C7 100n 1206
C8 100n 0805
C9 100n 0805
C10 100n 1206
C11 100n 1206
R1 8.2K 1206
R2 2K 1206 pull-up resistor (optional)
R3 2K 1206 pull-up resistor (optional)
R4 5.1K 1206
R5 5.1K 1206
R6 5.1K 1206
R7 2K 0805 pull-up resistor (optional)
R8 2K 0805 pull-up resistor (optional)
R9 8.2K 1206
R10 10K 1206
D1 1N9001 DO214BA
L1 Ferrite Bead, low DC resistance, 3216
L2 Ferrite Bead, low DC resistance, 3216
Reset PCB-mount momentary switch

Soon I will update the shield’s page with the new info.

Driving the Fostex T50RP MK3 headphones

After too many years of abstinence from headphones, I was given as a present a pair of Fostex T50RP MK3s.

These headphones have an excellent VFM, having true planar magnetic drivers at a price point of ~150€.

This is what they look like on the inside:

Fostex inside (Medium)

Picture borrowed from here: http://www.head-fi.org/t/763009/fostex-new-rp-headphones-t50rpmk3-t40rpmk3-and-t20rpmk3/375#post_12077324

There is a drawback though, and that is their low sensitivity. ~92dbs mean that my current cell phone has no hope of making them rock. No chance at all. Same goes for pretty much any USB-powered DAC/headphone amp. So anyone serious about driving these headphones needs to look into a proper headphone amplifier.

I said to myself that I should try to build a proper amp with parts that I already had lying around, so I looked at my stockpile. I realized that I had a brand new pair of AMB alpha20 class-a line amplifiers, rated at 3.0Wrms into 33Ω with a ±18VDC power supply.

AMB alpha20

The T50RP are 50Ω and can handle up to 3000mW, so I thought that they would be a good match.

Powering the alphas by my bench power supply, I connected them to my audio card’s line out (an Auzen X-Meridian) and hooked up the headphones. The result was impressive. The alphas delived sound that was clear, crisp, with very little distortion. Plus they managed to achieve SPLs well into eardrum-damaging territory. Good.

Next up was the power supply. I had a set of Salas BiB shunt regulators that were collecting dust, so they would do just fine.

Salas BiB 1.1 alpha20

I set them up for a CCS current of ~300mA.

The case would be a Modushop.biz Galaxy 1U aluminum one that I had bought for a project that never went beyond the design phase.

I was missing a transformer that would fit inside the 1U case, so I bought a 25VA unit from Mouser.

At last but not least, I needed a 1/4″ TRS jack that could be mounted on a 10mm thick aluminum face. Neutrik had the perfect part for the job:


So, all I ended up purchasing was the trafo and the 1/4″ jack. Nice.

2015-11-29 17.57.20_resize

So now I had a functioning headphone amplifier.

The next step is to add a USB to I2S interface, a DAC, some sort of volume control, another power supply to power them and an Arduino & Screen to control them. Space might be an issue..

DIYINHK XMOS Multichannel 32ch USB to/from I2S/DSD SPDIF Interface

About a month ago DIYINHK released a USB to I2S interface board based on the brand new and all-powerful XMOS xCORE-200 chip.


The specific chip used by DIYINHK is the middle-of-the-line XU216-512 which corresponds to some pretty serious horsepower: 16 logical cores for a total of 2000 MIPS, 512KB SRAM, 2MB FLASH.


So, what can we do with all this horsepower you say? It’s simple. Tons of channels of high-resolution audio. Plus I2S inputs, besides the usual outputs. Plus DSD1024. Plus use a cool OLED display as a VU meter.

The board I bought came with the default firmware, which supports:

  • 6 channel 384kHz I2S output
  • 4 channel 384kHz I2S input
  • spdif output
  • OLED VU meter
  • Volume up/down control button

Here is a video of it in action:

A maximum 32 channels can be supported with the right firmware (not provided by DIYINHK).


The board (a 4-layer design, btw) comes with three high quality NDK NZ2520SD Ultra low phase noise oscillators. There is provision for powering two of the oscillators externally, by removing a ferrite bead and applying power through one of the headers.

The board is not USB powered. It needs a relatively beefy 3.3V power supply, capable of providing a maximum of 800mA (even though a typical power consumption is in the neighborhood of 570mA). Beware, a weak power supply or an inadequate connector will cause to board to not power up.

It comes with a fully featured Thesycon driver for Windows. Linux & Mac OS don’t need a driver.

An interesting detail is that the Windows 10 driver that is available only supports stereo operation and no multichannel (v2.26). If you want multichannel you’ll have to go back to Windows 7 (v1.67) (or perhaps Linux or Mac OS, it isn’t clear..).

DIYINHK’s site says that the latest available driver is v2.26, but I did not find such a driver in their downloads section, so I emailed them about it. They sent me a link for an even newer driver, v3.20.

DIYINHK XMOS Driver 3.20 1
DIYINHK XMOS Driver 3.20 2
DIYINHK XMOS Driver 3.20 3
DIYINHK XMOS Driver 3.20 4
The board has a ton of exposed I/O, split into three 0.1″ headers. These are the pinouts, according to DIYINHK:


Now, if these pinouts look somewhat cryptic to you, you are not alone. I will try to clarify things a bit.

This is the most interesting header:

Header 1

I have marked in red the power supply input. It is a good idea to use all of the pins for making the connections, since ~800mA is nothing to sneeze at.

The pins in green are the I2S outputs. For 2 channel operation you will need to connect the DATA, BCK & LRCK pins. The rest of the output channels should be available at pins DO2, DO3 and DO4. I say “should” because I haven’t tested them. I should repeat that multichannel operation with the provided driver is only possible at the moment with Windows 7 (and possibly Linux & Mac OS).

The pins in yellow are the I2S DATA inputs. For 2 channel operation you will need to connect the DIO1, BCK & LRCK pins. The rest of the input channels should be pins DIO2, DIO3 and DIO4. The same multichannel restrictions I mentioned above apply to the I2S inputs.

The OLED screen is connected to one of the side headers, like this:

xmos-multichannel-high-quality-usb-tofrom-i2sdsd-spdif-pcb (3)


The left header is the XSYS connector for uploading firmware to the XMOS.

Next up: connecting it to my PCM4222 EVM ADC board.

HP Proliant Microserver Gen8

I’ve been a fan of HP’s Microserver line for many years. I bought my first one in 2011, my second one in 2013 and my third one a few days ago. All of them are running non-stop since I bought them. They have proven to be true Proliant servers, in the sense of having good reliability and build quality.

But the latest one (Gen8) is by far the most “Proliant” of them all (more on that later).

2015-12-22 00.39.59

Let’s start by getting the specs out of the way. I bought the 819185-001 model, which comes with:

  • One Intel® Celeron® G1610T (2.3GHz/2-core/2MB/35W) Processor
  • 4GB (1 x 4GB) PC3L-12800E DDR3 UDIMM
  • HPE Ethernet 1Gb 2-port 332i Adapter
  • HPE Dynamic Smart Array B120i Controller
  • 150W Non-Hot Plug, Non-Redundant Power Supply
  • HPE iLO Management Engine

It has pretty good connectivity, since it comes with 7 x USB ports (2 of them USB 3.0), 3 x GbE Ports (one of them is the dedicated iLO port, more on that later), one PCIe x16 slot, etc.

2015-12-21 19.18.20

It supports 4 internal HDDs and an internal slim DVD-RW drive. Since it is 2016 (no-one needs DVD-RW drives any more), I decided to make better use of the server’s fifth SATA port by using it to connect an SSD system drive. Getting the SATA cable from the mainboard to the top of the case was no problem, but powering the SSD was. The server has a spare power connector, but it is meant to power HP’s DVD-RW drive which (oddly enough) has an old floppy drive power connector. I did not want to cut the cable and splice in a proper SATA power connector, so I did the sensible thing. I robbed an old floppy drive of its most precious component: Its power input jack.

2015-12-21 19.31.57

I made sure that it mated properly with the server’s connector.2015-12-21 20.21.48-2

And I soldered on an old SATA power cable I had. I used heat shrink tubing (of proper colors of course :P) to make sure that there would be no possibility of shorts.2015-12-21 20.38.092015-12-21 20.40.17

So now I had my SSD installed and it was time to install the OS.

2015-12-22 00.29.17

This is where things get interesting. Remember, this is a proper Proliant server. What this means if that it has a pretty strict operating system compatibility list, and no consumer OS are officially supported. So, Windows Server 2012R2 and 2008R2 are OK, Windows 8.1 is not. I normally run Windows Home Server 2011 (which is based on Server 2008) so I should be OK, but I decided to get started with a trial of the full fledged Windows Server 2012R2 (just for the experience..).

Installing an OS is supposed to be a simple procedure. HP’s Intelligent Provisioning takes care of drivers and server applications for you, but before you get to that there are a number of things to do.

We are dealing with an actual server here, so inexperienced users should definitely start by reading the manual or at least the quick start guide that comes with the server. If you do not do that, you should not expect to get very far. You will waste a few hours, wandering why Windows is not installing and what you are doing wrong.

One of the first things to do is to decide whether you want to make use of the server’s Dynamic Smart Array RAID controller of not. You have a choice. You may run it either in AHCI mode (a.k.a. “dumb mode”) or in RAID mode. There are merits to either mode. If you go the AHCI route, you will get to keep your drives’ existing data (which would be wiped clean if you went the other way) and that data will be visible from other machines if you decide to take the HDDs out and put them inside some other machine. So the main drawback is noise. That’s right, the server’s main fan will run a lot quieter if you set your Smart Array controller in RAID mode. In fact, this way it will run even quieter than the previous generation of Microservers. I chose to go this way. So, first order of business is to create an array. You may create a RAID0 or 1 array if you have 2 or more drives or RAID0 if you have one. I would have a number of drives in my server, but I did not want redundancy, so I started with one RAID0 array consisting of my SSD system drive.

2015-12-21 21.01.31

Next up was a firmware update for the server’s subsystems. There is a bewildering array of firmwares that may need updating. Good thing that the process is automatic and is done from within the server’s BIOS, before you install the OS. The same goes for driver updates – they are downloaded automatically before the OS installation begins. Note that the firmware & driver updates come from HP’s web site (obviously..), so you should have at least one ethernet cable connected to your ethernet switch. The server will use DHCP to get on your network. Keep in mind that the firmware update when done this way is actually not very effective, meaning that chances are that there are newer versions of your firmwares available from HP’s site, but you should not worry about that just yet.

Do use HP’s Intelligent Provisioning to install your OS of choice, preferably from a USB installation medium. I know that there exist unofficial (and thus unsupported) ways to install non-supported operating systems, such as Windows 8.1, but I have not done any serious research into them. YMMV.

2015-12-21 21.46.51

The server will reboot (several times actually..) and you should be patient. Each reboot takes more than 2 minutes, since the server does extensive testing of its subsystems (processor, memory, controllers, iLO, etc).

2015-12-22 20.17.38

You may have noticed that I now have 8GB of RAM installed. I added a 4GB ECC DDR3 DIMM that I had bought for my first Microserver (from 2011). I no longer see the “Genuine HP Memory” message since it is (if I remember correctly) a Kingston DIMM, but I do have twice as much memory, so I can live with that. This memory stick is not officially supported, and it is a bit slow compared to the one that came preinstalled, but it works just fine and 8GBs of RAM offer much better overall performance than 4GBs.

Once you have Windows installed, you should got to HP’s site and register your server. This way you will have access to official support plus HP’s up-to-date ISO file (Service Pack for ProLiant) with all the latest drivers, firmwares, etc. You should mount that ISO image and install the relevant software. You will get useful tools for managing your Smart Array controller, making firmware and driver updates, viewing logs, etc.

You should also make use of your iLO 4 system.

2015-12-21 19.19.10

It will give you remote access to your server’s console without having a monitor connected (up to the time that the OS loads) and a bucketload of diagnostic information such as fan speed, temperatures, etc.

Gen8 temperatures

Once I had the OS installed, I moved my 4 x 3TB WD RED drives from my old Microserver to the new one, one at a time (copying the data through the network link). Now I’m waiting to receive a PCIe e-SATA controller that is compatible with the Gen8 Microserver so that I can connect my Lian Li DAS enclosure with its port multiplier interface and its 5 extra SATA drives.

Deep In House, Vol. 7 & 8

Once again, the holidays are (ok, were) upon us so I found the time to do a holiday mix. I had a lot of material to cover, so I decided to split it in two parts.


Volume 7:

Deep In House, Vol. 7 (December 2015) by Dimitris Dimitrakoudis on Mixcloud

1. Kilo Kish - Curious (Le Flex Remix) [Bonus Track]
2. Moon Boots feat. Janelle Kroll - Utopia (Radio Edit)
3. Duke Dumont - Ocean Drive
4. The Weeknd - Can't Feel My Face (Rainer Grimm Remix)
5. Tensnake feat. Nile Rodgers & Fiora - Good Enough To Keep (Original Mix)
6. C Tod - Light To Dark (Extended Mix)
7. Milk & Sugar - Ready Or Not (Club Mix)
8. Saccao & Gorkiz Feat. Tyler Jade - Fool Me Once (Slick Beats Remix)
9. C-Block - So Strung Out (Christian Cardwell & Nigel Stately Remix)
10. Dellmon & West K - You'll Find Me (Deepjack & Mr Nu Remix)
11. Daniel Steinberg - Let Me Down (Tube & Berger Remix)
12. Lastraw JazzyFunk - Darkest Nights (Mark Lower Remix)
13. Aeroplane feat. Benjamin Diamond - Lets Get Slow
14. F U S E R - I Want U (Original Mix)
15. Katerine - Ayo Technology (Milen & Vasco C Remix)
16. Rose - No Good (Toniia & Santiago Remix)
17. Modjo - Lady (Sllash Remix)
18. KRONO feat. Linying - Run (Original Mix)
19. Jutty Ranx - I See You (Pretty Pink Remix)

Volume 8:

Deep in House Vol. 8 (December 2015) by Dimitris Dimitrakoudis on Mixcloud

1. Tep No - Swear Like a Sailor
2. Marlon Roudette feat. Stewart - Everybody Feeling Something
3. Imany - Don't Be So Shy (Filatov & Karas Remix)
4. Frey - Ridin Higher (Original Mix)
5. Teenage Mutants & Purple Disco Machine - Get Lost
6. Cosmo Klein YNOT - When Doves Cry (Original Mix)
7. Four7 feat. Tiffany - J'adore (Original Mix)
8. NTEIBINT feat. Σtella - The Owner
9. Man Of Goodwill - An Abyss Of You (Mark Lower Remix)
10. Disclosure feat. Sam Smith - Omen (Claptone Remix)
11. Claptone feat. Jaw - Dear Life (Purple Disco Machine Remix)
12. Adana Twins feat. Human Life - Bleeding (Original Mix)
13. Calvin Harris & Disciples - How Deep Is Your Love (Extended Mix)
14. Deepjack & Mr Nu Inner Rebels - Got to Have Your Love (Andrey Exx & Troitski Remix)
15. Sam Feldt - Show Me Love (EDX's Indian Summer Remix)
16. Calvin Harris feat. Haim - Pray to God (Calvin Harris vs Mike Pickering Hacienda Remix)
17. Joyce Muniz faet. Bam - Back In The Days (Original Mix)
18. Blinkie feat. Alahna - Don't Give Up On Love (Club Mix)
19. Consoul Trainin & Vanilla Ace - Let Me Be Your Fantasy (Extended Mix)
20. Kaskade & Deadmau5 - I Remember (Shiba San Remix)
21. Gorgon City feat. Katy Menditta - Imagination (Astero Remix)
22. Option4 feat. Flash Lights - Love Like No Other (Original Mix)

Soekris DAM1021 s/pdif Inputs Board

I made a little s/pdif input board for my Soekris:

2015-12-05 16.41.34 (Large)

It has a coax input, two Toslink, and it includes a USB-to-serial adapter so as to facilitate easy update of the DAM’s firmware.

It also has an on-board low noise LDO for the Toslink modules and their switch, plus one more LDO for supplying the 1.2V necessary for the coax port.

More info to follow..