New digipeater for Mt Ginini VK1RGI

The performance of the VK1RGI packet digi on 145.175 MHz was clearly degraded on its best, or capability, and so it has been replaced.. The original install was a 1990s TNC2 and a FM-828 PMR radio.  FM828s make good split TX/RX radios and the individual TX and RX ports were diplexed into the existing 2+2 side mount dipole array used for the 146.950 voice repeater.

The new digi uses a Linux single board computer from Hardkernel called an ODROID XU-4.

. The XU4 is a total and massive overkill for the job , but I had one already built up in a diecast shielded aluminium box and power supply so why not use it… I am using the eMMC storage option, while a bit more $$, it is much more reliable as a long term storage device on a remote site, and less/unlikely to suffer severe file system damage when the power is switched off while it is busy. Compare to SD card systems.

An Odroid C1 or C2 would be just fine, also.

The software on the XU4 is  Debian flavor and the packet radio software is a package called DireWolf.  The Debian Linux OS has the usual tweaks for reducing file system update access writes and also I have the clock turned down to 1 GHz to eliminate any peak load heat issues if I decided to run it at 100%.

Direwolf is a very well written open source package, and it also has first class documentation and a good user forum. It is the best there is, in my opinion. The source code is clear and well documented. The package provides for software FSK sound modems of all  speeds 300-9.6k and beyond, digipeater, igate, locations beaconing, it does it all.

The Odroid XU4 would run about 20 instances of direwolf !  Hence a C1 or c2 Odroid, or Pi 2 or 3 would be fine, also.  On the XU4, direwolf application with the single 1200 baud VHF modem runs just a few % CPU .

For PTT I/O , I used the internal GPIO on the Odroid PCB, a single NPN transistor  with a 4.7k resistor in series with the base, and also a 10k resistor from GPIO to ground – this ground resistor ensures that while the GPIO is not set as an IN or OUT during boot up phase, and thus floating, the PTT transistor is pulled to ground.

For sound, I used a $10 USB plug in sound card. A real cheap one with 3.5mm stereo connectors, and mic level input. I would recommend a slightly easier to connect one known as a UCA-222 on  internet ebay circles that has RCA connectors and line level input.. With a mic level input be sure to turn the input mic boost off and capture mic level usually has to be all the way down..
Note that the Direwolf can run MULTIPLE modems and TNC nodes, and GPS recv etc . Just add more sound devices. Actually I think it can run separate modems on left and right channels. A startup script of many is installed and Direwolf runs at boot as a standard user with additional  Audio and Real Time privilges. It’s a good idea to run alsamixer in the scripts to ensure the mixer I/O is set correctly. I use ALSA but Direwolf has support for OSS, also, though I have not used it.

I used a $2 ebay 6-20V in, 5V output 5A switchmode power supply to make 5V, and be sure to add 0.1uF (100nF) ceramic capacitors on the back of the two large electrolytic capacitors to reduce the conducted noise from the power supply. Note also the ferrite bead on the input power supply.  This is required !

Radio: I used the most excellent Tait TM8000 series mobiles, available at low cost from some 2nd hand sellers on ebay, I buy mine from a company in the UK about about USD100. These radios have EXCELLENT receivers- the receivers are base-station grade, and have overload and strong signal handling performance 2nd to few . Highly recommended. The software is easy to program and the I/O is highly configurable all on a single DB15 on the rear of the radio . All combinations of audio tap points in the radio  (pre/de emphasis, pre/post clipper, DC / non DC etc)  are supported. Also they only draw about 2W on RX.  But anything will work… I took time to carefully set up the  modulation so that the 1200 and 2200 Hz tones were not clipped, that is the 2200 Hz tone was approx 5 dB MORE deviated than the 1200 Hz tone so they come out of a receiver flat when de emphasised.


Because the radio has a single T/R port and the original setup was a separate T/R port, the means of connecting it to the antenna system had to change. We have a spare VHF 4dB gain colinear on top of the mast, omni, just what we want, however being on the same mountain it requires careful filtering to not create or suffer interference from co located services.

A Bandpass-Notch 150mm diameter  1/4 wave filter (“cavity”) pass 145.175 (packet) and reject 146.350 (repeater RX) provided 52dB rejection of noise at the rpt recvfreq.  Bandpass-Notch filters dont provide much ‘bandpass’ so an extra standalone bandpass filter is required to protect other uses on the comm site, and also protect itself from strong signals from other users that might contribute to overload / spurious products and interference….so, a bandpass only cavity at 145.175  was added in series with the pass/notch filter to provide substantial rejection out of band. It has 30dB of rejection 3MHz away and keeps on increasing… Approx 42 around 156 MHz where there are quite a few co sited hi-band services and ~ 60dB rejection at the airband frequencies.

The repeater receiver of course needs to reject the 145.175 packet TX, this pass-notch filter was already in the duplexor chain.
Additionally there is the physical isolation of the two antennas that further increases the isolation by another ~ 48dB.
What is required? At 146.350 – 145.175 = 1.175 MHz away, ideally 90dB of TX noise rejection is required, and we have 52 (pass/notch)+48 (ant-ant)+ 17 (bandpass) = 117dB. The repeater transmitter to packet transmitter isolation is 48dB (ant-ant) + 24dB (bandpass) = 72dB. plenty.


This system being a linux box is remotely administered via an SSH  connection via a ham-band 440 MHz IP link by RACOMM Rip-EX. This is a highly configurable , variable bandwidth IP link that can provide bit rates from 1 to 100 kbps, permitting operation down to -120dBm for those really hard links.

Being a remote site that takes 1.5 hours drive to get to and a bit of planning, and is nearly  inaccessable in winter , there needs to be a alternative reset facility for the single board computer to initial a power disconnect and reconnect if I got it really messed up.
In the past I have used a touch tone sequence on the radio that would trigger a power interrupt for  3 seconds.   In this case I have put a Barix Barionet 100 into service, an IP controlled analog in / out, relay I /O and BASIC code automated box in. Something just as suitable would be one of the 8 ch relay controllers from ebay. Note the 2ch ones of similar ilk do not have a web server.

The whole thing is battery power supplied, floating on a lead acid supply/charger.  An old ADSL1 modem is used as a 4 port ethernet switch for connecting up the various IP ethernet devices and draws only about 3W.

How well does it work ? Sensational. Performance is at least 12-15dB better than before. A couple of reasons for this. 1) the radio it replaced was deaf and off frequency. 2) the Dire Wolf software modem is FAR FAR superior with weak signals.

Odroid XU4 in box with power supply, PTT PCB. Black USB cable goes off on the left to the sound device.

GPIO connections , ground , PTT1, PTT2. Don’t forget to add some 0.1uF capacitors in parallel with the electrolytic capacitors on that switch mode power supply PCB. With it they are noisy as hell.

TM8100 interface on DB15 . Ground, audio in, audio out, PTT in, carrier detect out

Barix 100 IO interface and DIN rail power distribution

Installation. The Racom IP link is visible on the fore right hand side.

Posted in electronics | Leave a comment

RF check of QYT KT-8900R Chinese origin Dual bander S/N 1608181253

A friend gave me this radio to evaluate just how clean or dirty this low cost ($100) 146 / 440 MHz 25W mobile dual bander might be.

The answer is pretty bad. It has a similar in-sub band spur output to radios like U5R etc that use a dual band radio chip.  Except this is much worse in the harmonic department because it has a 25W amplifier brick on the back end.

Ideally, all spurs should be below -36dBm on a radio that is designed to be connected to a decent antenna. Portable radios have a bit more leeway due to their suboptimal antennas. -36dBm is the European spec, -30dBm is the Australian spec AS4768 etc). FCC requirements for this sort of rig and power level are approx  -20dBm

The harmonics were measured carefully using a attenuator termination and a band pass filter at the harmonic to ensure the test gear harmonic performance was not in on the act.

The analyser used was a Rhode and Schwarz CMA-180, a pretty good modern test set. Highly recommended for analytical jobs like this.

This radio in my opinion is only suitable for operation using a harmonic filter. However… there are two bands with overlapping harmonic requirements, so a transmission line notch/stub filter is required that will provide harmonic suppression by means of overtone modes on the stub lines.

Otherwise, without a harmonic filter or a  harmonic insensitive bandpass filter, use at your own risk. Just don’t use it near a communications site ! At the bottom of a deep valley, sure.

How does an Icom/Kenwood/Yaesu/Alinco perform ?  The answer is well and much much better . The 3rd harmonics are usually ~ 65-70dB down and all other harmonics < -40dBm ! So it is not that hard, it is simply that these manufacturers have NFI about designing radios and understanding industry acceptable operational parameters. They should be prohibited imports. There is a reason the name brand radios are $$$.

So what’s it like as a FM voice radio ?

On TX- within a few ppm. The tx audio is low in mic gain.  The peak deviation that can be achieved by yelling into the microphone is 4.7kHz, however the average deviation approx 1 inch away from the mic talking loudly is  around 1kHz. So these radios will does like crap. The low frequency sensitivity is poor, below 800Hz, so they are low in audio and tinny.

On RX, the sensitivity is very high at  -127dBm 12dB SINAD but this ‘fantastic’ sensitivity comes at a price- the in band (600kHz spaced) 3rd order intercept point is approx -30dBm which is really poor .  My guess is that the designers simply put a wideband MMIC on the input to up the sensitivity and destroyed the strong signal performance.

To summarize, these radios are first class junk. The designers need to understand what is acceptable ., these radios are not. You get what you pay for. That’s why when you spend $300-$400 on a  Kenwood/Icom/Yaesu/Alinco dual bander, you get a high quality radio with RF spectral purity that meets industry expectations, a radio that has good TX audio and a radio that wont flake out everytime it gets within 10km of another transmitter.

Glen VK1XX



TX 146.350. note marginal in band spurs at 132 and 158 MHz


third harmonic at 440 MHz of 2m TX. only -33dBc….. This is unacceptable.


440 MHz fundamental. In band spurs at 426 and 452 MHz are acceptable.


2nd harmonic of 440 MHz. approx -50dBc. very poor . Lands right in the middle of cellphone downlinks . great cellphone jammer.


7th harmonic of 146 MHz in the aircraft nav band. Not cool ! -70dBc meets ham specs but does not meet industry acceptable specs, misses by about 10dB. 


6th harmonic of 146 MHz !. >-65dBc. Not bad but still doesn’t meet acceptable spec.


5th harmonic of 146 MHz. about -55dBc. poor.


4th harmonic of 440 MHz. not so bad really. not great though.


3rd harmonic of 440 MHz at 1320. very poor

Posted in electronics | Leave a comment

Ryzen7 and Xilinx Vivado and B350+

I’m putting a Ryzen system together for evaluating the AMD work. It’s important to support the Intel competition. My system is a 1700  on a B350+ Asus , 128GB M2 SSD, 4 xGB DIMMs 2400. 8GB? this is a cheap eval. If I like it, I’ll stick 32GB in it.

Tried to install Debian 9 AMD64  net install. The installer chooses the wrong network driver  . It’s an RTL 8168 etc. So I downloaded the Non-Free firmware Debian image, 3.4GB, and that installed just fine.

Ran up Vivado 2017.3 on it. Copied over  a Windows project directory,  and Vivado was not happy. All the MIF file paths are screwed up. For some reason, VIvado is on the windows install storing the full path including the drive name when pointing to the MIF files ? WTF Xilinx ??? so, there would be a script to write to fix that up.  Still, the Vivado install worked like a charm – good one Xilinx !  It ran just fine, all the graphics and boxes all works as it should. Hooray Java.

OK, so that runs OK. Linux and Vivado and Debian will work for people.

Time for windows 10 pro. Installs OK. Geez there is alot of fluff now in a Windows install.  Can’t we just have a Pro install without the cheese please MS ?  Finally, after the endless reboots and updates I install Start-Is-Back, Opera, Ryzen Master , Vivado , Lasoo.

I run a few Vivado runs.
Compare box is Haswell… i5-4690k, turboing to 4 GHz, 32GB dual channel DDR3 1600 MHz  and it benches Synthesis- 4:21, Implementation 5:29.

Still getting my head around The Ryzen Master Utility, and BALANCED/High performance mode etc. .

OK, Using ProcessLasoo to lock Vivado to Upper CCX cores 8-15…

general.Maxthreads=8 (was =4 for i5-4690k).

So 1st run 3.6GHz:  5:22 6:20. 3.6GHz (1.25V)

2nd run 3.8 GHz:  5:07, 6:32 (1.25V).  slightly better synthesis.

3rd run 4 GHz :  4:47 , 6:11  (1.35V). The heat came up along way on this one (48 deg C) (ambient 23). synthesis still 9% faster , implementation 11% faster on Haswell
…another run at 4 GHz  : 4:46 ; 6:10…….so that’s real.

Conclusion is that Zen slightly slower than Haswell,  clock for clock ….approx even with 2400 versus 1600 memory.

The 2400 memory wont go any faster without overclocking voodoo which pro users are not going to bother with I think . Might get some 3200 memory and see how the benchmarks compare. I slowed he memory down to 2166, went about 8 seconds on synth and impl, or ~3% (for a 10% reduction- although the RAS/CAS timings got  faster 14 14 14 instead of 15 15 etc)

On the other hand, the computer didn’t become useless when implementation really started cracking the whip – a full 4 cores, 8 threads left over to run other stuff, no problem.

Ran a mixed PRIME95 all thread stress test, with the supplied-with-the-CPU stock cooler, 1.35V, 3.9GHz, got a 46 deg C ambient rise.. Not bad. With a liquid cooler, would be no issue.  Went to 4 GHz stress test-  crash, did same with 1.4V no problem, but got too hot (>70). So there is room to experiment…











Posted in electronics | Leave a comment

Paste jetter – inkjet lessons

I ordered my Piezo actuator today. My Piezo actuators came from    I got a -30>>150V actuator type SA050520.  Have been learning about making small features, including  EDM

The block that houses the delivery chamber will be temperature controlled I’ve done alot of reading, including this short gem

drawing below from the above thesis :


Other required reading..

Particularly figures 6,7 and 8 showing  the Thixotropy


Posted in Pick and place | Leave a comment

random thoughts toward a successful paste dispenser.

These are RANDOM thoughts out loud, right now….there are a few things that need to be done to make the paste dispenser work, I have studied the various syringe/ auger constructions, their claims over others etc etc extensively.

rough drawing……



simpler Visio-dispenser

MK1 will be direct syringe pressure type.
the syringe types need a bit of work- a combination of the below :
0) needs temperature stability/control
1) no air piston- direct piston driven by lead screw/stepper. no air anywhere .
2) pressure in the chamber needs to be monitored . have to figure this one out. something on the wall that provides pretty reasonable consistency. I am thinking resistive or similar sensor on the walls of the pressure chamber.
3) pressure into the chamber by a piston is easy to increase by pushing the piston down, but on the withdrawal which is important has to be done without introducing air.

A withdrawal is required as part of the cycle. Many system have problems with voids created. A vac created may not pull back the fluid reliably and as desired, so that needs to be worked on. there may need to be the vac created by the retreating piston PLUS another means to pull the fluid back up the needle. Perhaps an opposing (with hole in the middle) piston at the bottom of the chamber to push the fluid back up. Surface tension will permit the fluid in the nozzle also to assist pulling the fluid back up (and avoid any voids- that’s the idea- no voids are to be created.
There are other means to push/pull the fluid.   Constricting a channel of sorts (squeeze) or expand- the fluid needs to be pulled up the nozzle.
It’s hydraulics, also.  Hydraulic systems are using push , pull…..Must remember. if only the piston moves back, we are relying on the vac and the surface tension to pull everything up. the question is for example, if the pressure chamber was full, that’s alot of fluid to pullback on vac and surface tension. So I think there needs to be assistance of sorts. maybe there are ribs or something on the walls that move, I dunno, but I will start thinking.  if there is pullup (by vac due to piston pullback) AND pressure from the bottom of the chamber UP (by another piston) then we can avoid voids in the main chamber and only the small quantity in the nozzle needs to be pulled back up the nozzle, not a large volume up the chamber.
Perhaps…. deforming the walls , changing the shape of the entire chamber with a crush, or a expansion would provide useful methods, also,

IE use a piston for movement  of fluid to ensure the chamber stays pressurized, but also use deformation of the chamber for dispensing. Epiphany : If  a large surface area of the chamber deforms  this is acting on a much larger  surface area than the end of a piston.
such a deformative wall though is a difficult thing to build . The pushing piston is required to keep the deformation chamber  full, as the deformation chamber has finite breathing ability.  so the deformative chamber for dispensing is a  hard but interesting option.

Either the chamber (stock) or the applicator (needle ) could be deformed..There is a good supply of piezoelectric actuators around, time to learn about them…
Air or fluid could be used to deform a container, also, like a bladder or sealed container inside a container to squeeze or open the contents.

now we have good pressure and release control and pressure sensors, when the dot is deposited, best performance is a precise delay before the precise pullup.
Distance to Z=0 is going to have to be known to at least half the dot size- at least 0.1mm , so there will need to be a very precise distance sensor and height control of the head.

The 32 gauge auger system that is designed for 01005s and it is successful, uses a 0.1mm nozzle internal diameter.  I will start with that size.
There will need to be multiple devices to be able to deposit with reasonable speed on a mixed PCB- IE different nozzle sizes. Watching on my air dispenser dispensing through a 0.1mm nozzle, there is at least a 1/2 of a second for the dot to be let go- IE takes a while for the small amount of surface tension, presumably because the area is very small, takes time to let go. Pull up too fast and the blob is not reliable, the head pullup needs to be slow. So the smaller dots end up being quite time consuming to put down.

I read that the surface tension and behaviour  changes quite a bit with temperature so the chamber paste AND the PCB surface will need to be temperature controlled.  No use dropping carefully controlled paste onto an icy PCB.

To summarize :
VERY accurate control of Z height  with better than 10um movement resolution .
Piston compression from one end of the chamber
Piston compression from the other end of the chamber..
Deformation of the chamber or applicator (needle)

another idea is that once the paste is moved into the applicator (needle) this area could be sealed off from the stock chamber.(rotating / sliding ) , constriction of the applicator etc) and the applicator could then be deformed by a fast pulse (IE a piezo actuator or solenoid) . This way the only way for the paste to go is out the needle.

ideas…ideas.. a solenoid smacking into a deformable wall would work…
if there was a sub chamber from the main stock chamber like a hollow block that had the applicator on it and it was sealed from the stock chamber, an deformation actuator could be one or more of the walls of this stock chamber. I think for success, the pushing force needs to be applied over a very large area  to volume ratio. Not just over a small area of the volume.
Additionally, if there is a separate deformation chamber to the stock chamber, a pull-back motion in the stock chamber may not be required.

In fact, ipso facto, if the paste is pumped in, there might really be no need of a piston/ construction bladder for the stock chamber.

Constriction of the duct  between the stock  and delivery chamber can be simplified. A duck valve. (thanks Robert)

OR just constrict the stock chamber (for delivery and pullback)  and have no separate delivery chamber.This solves the problem if refilling the delivery chamber without ooze.
The thing is, the small chamber removes a whole lot of fluid the pulse has to be transferred through.. so perhaps another valve is required on the delivery needle.

My guess if the bigger the volume getting squeeze, the more  low-pass the delivery behaviour. and the harder to control over temperature and paste variation…

Might use ultrasonics to measure density, voids, pressure.
Like three transducers in a 120 deg  arond… 1MHz transducers…


No need to go crazy with piezo though, voice coils, solenoids they all work.
golly there are all sorts of piezo things


Posted in Pick and place | Leave a comment

Guides arrived…


From “Jiean Robot” in Zhejiang, China. “Zhejiang Sikete Technology co ltd”
Very easy to deal with Chinese company, good customer service, understood my needs, able to customize, and 7 day delivery once TT received. Well priced also, about USD400 each approx .

Photo is before the mounting plates go on to interface the rails and the extrusion.

Well I think I went a bit  too big !   NSS95 for the dual X rails and a smaller NSS75 for the Y gantry. The idea is X gantry has to support (and accelerate )  the Y guide and the gear.
Motion specs for the 75 and 95 are the same, just the loading. In hindsight, NSS75 all round would have been fine.  I went with the ’95 because they were only about 15% more .

75 guide is 7.5 kg, and ’95 is 12.5 kg. Lots of extra Aluminium plate…The 75 guide (Y) is 600 travel. The X is 800 travel,
The guides come with photo-interrupter limit and home switches and cables that can be put on either side of the guide.

There is 780 between the supports so the head on the Y can be quite wide (in Y) and still run full travel.

They are silky smooth… I have run them up with a motor and they scared me….

Posted in Pick and place | Leave a comment

PnP : On stereo imaging and more focus

I had in my plans for two cameras in a stereo scopic setup for down vision so I could figure out depth and distance to things on the table .

However. doh! , I was playing with my fancy PointGrey camera last night and realised I don’t need two cameras, I just need to take a image, and move the camera and take another image ! and I can move the camera with sub pixel accuracy in the FOV.

And then, another obvious penny dropped.  Image de blurring and refocussing  (enhancing depth of field) can be done with a series of images takes when a camera moves in a plane tangential to the object. I read that many  years ago .

And of course I can move my down (and up) camera and take multiple shots.

So a bit of searching and googling later reveals google have done it for Android





Posted in Pick and place | Leave a comment