Wednesday, May 13, 2015

Hioki 8841 Waveform Recorder - Introduction & How-To

I just posted a YouTube clip explaining how to use the basic functionality of the Hioki 8841 Waveform Recorder. It isn't the newest piece of kit (it has a floppy drive in it!), but does a solid job and is still available from my local test equipment rentals company.

In the video I run through how to use the basic functionality of the Hioki 8841 Memory HiCorder.

This includes:
 - Setting up input channels
 - Setting up the length of a recording and horizontal scaling
 - Setting up a recording trigger
 - Manually trigger a recording
 - How to continuously display data (waves continuously scrolling across the screen)
 - Reviewing a recording (moving left and right across the screen to view an recording)
 - Printing out a recording

Saturday, November 5, 2011

Fast wireless data transfer between Android and Computer

So, a couple of months ago the USB cable which came with my Nexus-S stopped working for data transfer. Since then the number of pictures and videos has been steadily building up. Today I decided to solve that by getting a wifi link to my phone working.
I tried a number of free apps, but none of them could transfer more than one file at once. Then I stumbled upon Software Data Cable, so I thought I would share.

How To:
1) Find and install the free 'Software Data Cable' app on your android phone.
2) Launch it and click on 'Start Service'
3) Download a FTP client on your computer if you don't already have one. I use the free FileZilla client
4) Launch FileZilla
5) On your android there will be an address which looks like
6) Type the bit into 'Host' and the 8888 bit into 'Port'
7) Click QuickConnect

Now you can drag and drop files and folders from you phone (on the right) to your computer (one the left) or vice versa.

Speed up Transfers:
In order speed up the transfer of lots of files do the following:
i) In FileZilla click on 'Edit' -> 'Settings'
ii) Click on 'Transfers' in the left pane
iii) Change 'Maximum simultaneous transfers' to 1
For me this approximately tripled the transfer speed.

Tuesday, November 1, 2011

Fake tech support call


Well, I received one of those indian 'I am from Microsoft and your computer has a virus and is going slower and slower' scam calls.

I went along with them to see what scam they were running.

1) They got me to check "eventvwr" and showed me Application Events and claimed they were caused by a virus (they obviously aren't)

2) They then got me to look at "inf virus" and told me these were all caused by virus' too.

3) Then the real part of the scam started when they wanted to have a technician 'help' me. Basically they get you to go to from a run dialogue (I'm guessing this gives it administrator rights or similar?). Then, because I "didn't know the 6 digit code that came with my computer" they gave me one. In this case 471831 (DONT TYPE THAT IN!).

I hung up at this point, because I couldn't find a picture of what the letmein page looked like and it's not like I was actually going to give them remote access to my computer.

Wish I had had time to get a virtual machine running so I could run through it with them and see what they tried.

Tuesday, October 18, 2011

Getting UART 1, 2 and 3 to work in the IGEPv2


I had quite a struggle getting all three of the UARTs to work under linaro on my IGEPv2. I was originally using linaro-media-create to make my microSD card image. The problem is that this seems to use the linaro kernel, rather than the IGEP kernel. As such, I would recommend first following the steps on my previous post to get the IGEP kernel, with a linaro head on it. This will make getting all of the peripherals to work much easier.

Specifically, here is what I did to get UART 1, 2 and 3 working:


Add the following line to igep.ini. For a distribution running off an SD card, this is found in the 'boot' partition of the card.


This stops UART 1 being use for RS485 and makes it available to you on J960 at RS232 instead. Note that what is happening here, is that you are disabling RS485 converter, so the RS232 port will looking like it sort of works without it, but only in one direction.

For me, UART1 did not work after the following change, so I also had to follow the instructions in the hardware manual and execute the following commands from within the loaded operating system.

sudo su 
mount -t debugfs none /sys/kernel/debug
echo 0x007 > /sys/kernel/debug/omap_mux/uart1_rts 
echo 0x007 > /sys/kernel/debug/omap_mux/uart1_cts 

For me, the 'none' was already mounted, but it can't hurt to run it again.

Note that the above line 'sudo su' makes you the root user. To get back to being yourself, use 'su USERNAME', where USERNAME is the user you were logged on as.


Add the following lines to igep.ini.


This enables UART 2 over J990.


Comment out the following line in igep.ini by placing a semicolon before it.


This disables the serial debug output over UART3 on J960, and makes it available for use by you. This may not be needed, depending on which rootfs you are using. Try joining TX and RX together (pin 2 and 3 on J960). Then open /dev/ttyS2 (say using minicom) and copy and paste a big chunk of data into it. If the screen goes crazy, it is because you are not the only one using UART2, so you have to comment out the above line.

You should now have:

UART 1 over pin 8/9 of J960 at RS232 levels

UART 2 over pin 6/8 of J990 at 1V8 CMOS levels (DO NOT EXPOSE TO ABOVE 1V8!)

UART 3 over pin 2/3 of J960 at RS232 levels

Installing rtklib

Hey all,

Just a quick few lines, which I used to successfully make rtklib under ubuntu 10.10. I am not sure if all install packages are required or not, but the following worked for me.

Download and unpack the latest version of rtklib, 2.4.1 as at October 2011

cd rtklib_2.4.1/

Install the required C compiler and Linear Algebra packs

sudo apt-get install build-essential
sudo apt-get install automake
sudo apt-get install checkinstall
sudo apt-get install liblapack3gf
sudo apt-get install libblas3gf

Make it!

cd app/
sudo bash

Tutorial on getting a working IGEP/linaro distribution on the IGEPv2

Hi all!

Over the last couple of months I have been playing around with an IGEPv2. I was starting off with a very limited knowledge of linux and no idea when it came to embedded development. The IGEP wiki was useful, but what with me not having a clue when it came to x-loaders/uboot/kernels, I struggled to get a working microSD card. In order to help out other people in a similar position, I have combined a few different sources from the IGEP wiki into one contiguous file. You can use it from any new ubunutu distribution (or at least all those I have tried), and there is no need to use the 8.04 version supplied by IGEP.

I am not sure exactly what the protocol is when copying bits of a wiki, if there are any copyright issues, please let me know ASAP.

NOTE: Much of what follows is NOT MY WORK. I have copied bits and pieces from various places in the IGEP wiki. It is based on this page.

Preparing the microSD card

Find out which /dev/ directory your micro SD card is connected to:

Open a terminal window and clear your dmesg using:

sudo dmesg -c

Now insert a new microsd card in your PC and then check your dmesg:


You should see something like this:

mmc0: new high speed SDHC card at address 0001

mmcblk0: mmc0:0001 00000 3.79 GiB

mmcblk0: unknown partition table

From now on, whenever you see 'mmcblk0' replace it with whatever your output above was . Mine was sdb, and I have replaced it in the following sections. Note that once we make them, partition 1 and partition 2 are

mmcblkp1 <=> sdb1 <=> sdc1

mmcblkp2 <=> sdb2 <=> sdc2

etc, where these appear.

Ensure all in your microsd card it's erased:

$ umount /dev/sdb1
$ umount /dev/sdb2
$ sudo dd if=/dev/zero of=/dev/sdb bs=1024 count=1024
[sudo] password for jdoe:
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.43556 s, 2.4 MB/s

Install GParted

We will use the gparted program for create the partitions, if you don't have this program installed then you must install it with this command:

sudo apt-get install gparted

Create the required Partitions

When the install procedure ends you can call the program from your system tools menu or directly using a terminal console using 'sudo gparted'.

Create the MSDOS Partition Table

The next step it's create the msdos table partition for it you should click in the "Device" menu and then in the "Create Partition Table" option.

Check the default option it's create a msdos partition table.

After that you can Apply.

Create the BOOT Partition

The Next step it's create the partitions for it you should go to the partition menu and select the "New" option then the application.

We will configure the partition as:

§ Primary Partition

§ Format: FAT32

§ Size: 100 MegaBytes

§ Label: Boot

§ Align to: cylinder

We must "add" the partition.

It is recommended to apply changes now or you might get an error later.

Create the ROOTFS Partition

The Next step it's create the root file system partition.

First you should select the unallocated partition area and then you should go to the partition menu and select the "New" option.

We will configure the rootfs partition as:

§ Primary Partition

§ Format: EXT4

§ Size: All the Rest

§ Label: Rootfs

At end we will click on "Add" button.

Apply all Changes

Click on apply button in the main menu after that gparted show a window to confirm all operations

We should click on apply button.

Now we can see all partitions and configurations done in the main gparted window

Select "Boot flag" for the boot partition

Now we must select the boot flag for the first partition for it we use the right mouse button over the boot partition and select "Manage Flags" option

Now we have the microsd prepared for copy the boot files

Select the boot partition and mount it in your host.

X-Loader (MLO)

We will build the x-loader (first thing which the processor calls) with Ubuntu Cross Compiler gcc 4.5.2. Install the cross compiler based on your Linux version:

Enviroment Ubuntu 10.10

sudo apt-get install cpp-4.5-arm-linux-gnueabi g++-4.5-arm-linux-gnueabi

Enviroment Ubuntu 10.04

sudo add-apt-repository ppa:linaro-maintainers/toolchain
sudo apt-get install cpp-4.5-arm-linux-gnueabi g++-4.5-arm-linux-gnueabi

Setup the board settings

git clone git://
cd igep-x-loader
make igep00x0_config



Sign the binary x-loader

You should execute contrib/signGP for sign the xloader.

contrib/signGP x-load.bin

Copy the created x-loader.bin.ift into the boot partition and rename x-loader.bin.ift to MLO as follows. Note first you must mount the boot partition by right clicking on 'Places'-> 'boot' and selecting 'mount.'

cp x-load.bin.ift /media/boot/MLO

Now we're ready for test the board boots from the microsd card.

X-Loader boot test

We will eject the boot and rootfs partitions from our Host PC, this step it's a lot important due the Linux must sync all changes before eject the microsd card.

We will insert our microSD card into the IGEP board, connect the serial debug cable and open the serial terminal

Power UP the board and you should see something similar to this put out over the serial console

Configure the IGEP-X-Loader

As mentioned earlier, the x-loader is the first file called by the processor. It is then responsible for calling the kernel. In order to control what start-up parameters the kernel is given, we use a file called igep.ini. You can use a file like this:

; Kernel load address, NOT Modify
; RAM disk load Address, NOT Modify
; Board Serial ID
; Board Revision
; Kernel Image Name
; Kernel RAM Disk Image Name
MachineID=xxxx Where Machine ID = 2344 for IGEPv2 and ID = 2717 for IGEP Module
; Setup the Kernel console params
; Enable early printk
; Setup the Board Memory Configuration
; Setup the Boot Delay
; Setup the ARM Processor Speed
; Setup the loglevel
; Enable Kernel Debug Output
; Fix RTC Variable
; Configure nocompcache variable
; Configure Frame Buffer Configuration
; Configure Video Ram assigned
; Configure Video RAM assigned to every frame buffer
; Configure frame buffer debug output
; Configure DSS Video Debug option
; Configure the Board Ethernet Mac Address
;  --- Configure UBI FS boot --- 
;  --- Configure NFS boot --- 
;  --- Configure MMC boot --- 
root=/dev/mmcblk0p2 rw rootwait
; Assign Init program

Create a new file into the boot partition named igep.ini with these content in it and save the file. I will explain some of the lines in this file in a later post.

Build kernel from sources

Download the latest stable version sources and follow next steps:


tar xzf linux-omap-2.6.35.tar.gz

cd [kernel version]

A generic configuration is provided for all IGEP machines, and can be used as the default by

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- igep00x0_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage modules

Create the Rootfs mount point

Go to /media directory and create one sub-folder called "binary"

$ cd /media
$ media > sudo mkdir binary

Mount the RootFS partition

Mount the rootfs partition using the 'binary' directory

$ media > sudo mount /dev/sdb2 /media/binary

Download rootfs

The rootfs (also called the 'head' I think) is what we see of the operating system. In this tutorial I will use a rootfs made by linaro. There are several options available from

ALIP - a very basic desktop including applications for internet browsing (ubuntu 10.10 based)

Netbook - has a few more features and is a bit bigger/slower but comes with a bunch of useful programs pre-isntalled

Plasma - the biggest of the options, it also has the nicest features and best looking desktop.

Headless - doesn't use a screen. To access it, you have to use a remote console via a serial link.

$ media > wget

Untar the rootfs package

Make sure "linaro-m-headless-tar-20101108-2.tar.gz" or whichever linaro you have decided on is inside the /media directory and untar it using:

$ media > sudo tar xvfz linaro-m-headless-tar-20101108-2.tar.gz

Install the kernel modules

Now you should install your kernel modules inside your root file system.

$ media > cd /home/jdoe/linux-omap-2.6
$ /home/jdoe/linux-omap-2.6 > sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/binary

Install the kernel Image

Just copy the zImage inside your boot partition, remember before that you must mount your mmc boot partition.

$ /home/jdoe/linux-omap-2.6> sudo cp arch/arm/boot/zImage /media/boot/

After that you can unmount the boot & rootfs partitions. You may need to umount sdb2 twice if you get an error the first time

sudo umount /dev/sdb1
sudo umount /dev/sdb2

Now we're ready for test our new microsd card

Test your new MicroSD

Put your new SD card into your IGEP and power it up, with a monitor plugged into you DVI port. A red LED on your IGEPv2 should come on (this is the xloader doing its thing). This should then turn to a solid green LED as the kernel loads. Soon after this, some lines of debug info should start showing up on your screen, then a short pause and finally your working rootfs should load (i.e. your computer is now on!).

Tuesday, May 17, 2011

Matlab Subplot Spacing

Hey all, Just a quick matlab tip. I have been playing around with sub plots quite a bit and the margins between images seems far too big, especially when you are subplotting quite a few figures. I did a bit of a google, but couldn't find anyone with a quick tutorial on how to reduce the margins and increase image size. So here it is:

1) Go to your MATLAB folder in program files. It was 'C:\Program Files\MATLAB\' for me.
2) Navigate to '...\MATLAB\toolbox\matlab\graph2d\subplot.m'.
3) Make a copy of this subplot.m and put it in your current working directory (wherever your current files are).
4) Open it up, and find the line that says 'inset = [.2 .18 .04 .1]; % [left bottom right top]'. Change this to whichever margins you are after. I use 'inset = [.02 .05 .02 .05];'.
5) Save it.

If you want a more permanent solution, replace the file at '...\MATLAB\toolbox\matlab\graph2d\subplot.m' with the fixed subplot.m file, so that the fix will apply to all future projects. Don't forget to make a backup of the original file in case something goes wrong. I have checked this with R2010a and R2010b. If any changes needed for other versions, post a comment and let me know.

Now, whenever you make subplots in this folder, the margins will be smaller and the plots with be bigger! Note that this still isn't perfect, as the margins can still be pretty big when you have elongated graphs, but to fix that you have to start playing around with graph location and size, which is a bit more trial and error.