Wednesday, December 31, 2025

 How to upgrade a Pure Moment Charge.

You need a usb-c cable, connected to a computer or phone that can see usb drives.

Down load the firmware from the Pure site: https://support.pure-audio.com/b/pure-support/en-US/kb/articles/how-to-perform-an-update-on-your-pure-moment

Connect the usb-c to your computer/device
Unplug and replug the Pure moment  from the mains, the device is in standby at this point. Press and hold the dial until the display reads USB FLASH. 

The Pure Moment will appear on your computer/device as a usb drive, this is incidentally how you can add your own "ambient sounds" to the device (or rob them off the device).

drop the .ufw file into the the root of this drive. Safely eject then unplug the cable, the display on the Pure Moment will change. Go to settings (home button, scroll to settings, press the dial) the first option should now be "update fw" click on that and the sub menu to start the update. DON'T REMOVE THE POWER!

 When it's finished you should be updated. I'd say going from v17 to v37 is a critical update, if I'd not been able to do the update I'd have sent the device back, the sound was way too much bass and not being able to adjust the light timer would have also been a reason to return ... 

Saturday, October 31, 2020

Insert and overwrite/overtype in Word Online, (aka Office 365 or now Microsoft 365).

There are a number of unresolved threads about being able to activate and de-activate this.

I noticed the most reliable way today while helping my daughter.

If you have a word or sentence selected, pressing insert key switches between the two modes. This isn't apparent until you move off whatever you have selected though :D.

Overtype mode is indicated on my browser by the cusor being a blue 1 char text selection highlight.

This is with the new Edge based on Chromium and in Chrome.


Thursday, March 28, 2019

I have had IPv6 for a while via HE.net, but last year BT got around to enabling IPv6 on my broadband (they also sneakily kept putting the price up).
In the search for value I switched to PlusNet (Which! recomended for customer service in the past). Unfortunately PlusNet don't give you IPv6 (historically they have been pretty shit about moving with the times, and in the case of IPv6 they have gone backwards).
I connected my He.Net IPv6 tunnel back up to my router (LEDE if you're interested on BT Home Hub 5, so I have control of the DNS).
Around that time I also got a free netflix subscription and Microsoft (who I work for: disclaimer) also started offering reward points for searches.
Netflix just didn't work; I searched for why and found people had already fixed the issue in a few different ways, but then I realised that my Bing searches kept returning distinctly US looking results (especially the opening page of Bing), and more recently I stopped getting points for the quizes and the searches.
Some quick Wireshark tracing showed that Azure traffic manager was directing my IPv6 http connection towards US Bing not UK Bing.
Here is my fix, set dnsmasq on the router to blackhole AAAA (ipv6 address queries) for Bing (like we do for Netflix. It took a bit of investigation but this seeems to work for me:

# Null AAAA response
server=/bing.com/#
address=/bing.com/::
server=/trafficmanager.net/#
address=/trafficmanager.net/::

server=/a-msedge.net/#
address=/a-msedge.ne
t/::


The lines ending with hashes tell dnsmasq to look up these records itself rather than returning a forward, and those ending :: return a duff IPv6 record for the domain triggering the router to do IPv4 lookup. This does put dns load on the router, but it doesn't seem to mind too much :D

Wednesday, March 16, 2016

A year later ...

Wow, a whole year goes by so quickly ...well the Windows 10 international UK keyboard is no better than the Windows 8 was. Way to go MS. In fact the issue is worse because if you use a 3rd party International UK keyboard to get at diacritics you lose Cortana (yes really!). Cortana relies on a bunch of regional settings to decide whether she/it works in your region, and changing the keyboard breaks something. Still working on fixing that :D
I am now an Xbox one owner, it has some cool hardware features, but is a bit let down by the functionality provided by the operating system at the moment (as of March 2016):

  • It has IR emitters and can control things!
  • It has IR receivers for its' own remote
  • 802.11a/g wireless
  • Plays 3d blu-ray
  • Instant on mode
  • Voice commands
  • Facial recognition
  • so called "2nd screen" xbox glass as remote
  • REMOTE STREAMING TO A PC!!!
Downsides unfortuately:

  • Instant on mode consumes ~10W as far as I have measured (way too much).
  • The IR controls are limited to doing what the xbox knows how to do, no macros can be recorded and played back :(
  • Facial recognition for login is fooled by change of hair cut :(
  • No wake on LAN (not sure how xbox glass turns the machine on from standby, but it's not WOL).
  • You can't change the "resume on power" action for the xbox, when the power comes back the xbox stays off, even when it was in instant on mode.
Why do you care? Well remote streaming to your PC when you share the TV with the family is a serious bonus, I game from my office while my partner and or family are watching TV; but having to interrupt everyone to turn the xbox on is not a good thing (you need to see the screen to login). Plus having the xbox emitting IR commands while you're playing remote is going to annoy the rest of the family. Plus 10W on standby !!! arrrgh!! (knock, knock, are you playing? yes. Can you stop changing the volume please!)
So my solution is evolving. I have an IR blaster from Microsoft (media centre IR extender, bought for a long defunct media PC to go under the TV). I have a PI (I will need to check how much power it uses :D) the Xbox can be turned on via IR from full off (where it consumes less than 1W). I will set the Xbox's IR output to use a TV/Cable box/Audio remote that won't affect my devices, the PI can listen for these codes and "emit" the right ones for my TV etc. Plus the PI can remotely turn on the Xbox via IR, it will know when the Xbox is on as well! (the xbox will emit the on signal for a TV). I will put a mains timer plug on the Xbox and the pi to pull the power during the night and provide a hard reset for the Xbox and the PI, (so when I am remote I only have to wait a day to get the kit hard reset).
Other thoughts: have the PI display through the in hdmi of the xbox, get the pi to record IR sequence sign in so that I don't have to have the xbox always sign in as me with no password, use a PI zero (it can be setup as a USB slave rather than as a controller and therefore be a HID, no IR at that point).
I better get cracking.

Friday, March 13, 2015

I noticed that the international options on Windows UK English for windows 8 were a bit poor, but I hadn't realised how poor until I started using Duolingo on my Chromebook to learn Swedish (the Chromebook has UK International English keyboard support built in after a fashion, there's a Chromestore install to add it). Here's the fix you need to be able to type all those odd characters like ß and ¿ and «» and if you prefer to type your own curly quotes rather than rely on word to screw you over ( “” & ‘’) http://www.zolid.com/uk-intl-kb/index.htm

Monday, March 2, 2015

Call Routing with the Siemens n300ip

Call Routing with the Siemens n300ip

We've had one of these DECT IP phone boxes for quite a while. In fact we've had two, but the first one had a 10Meg half duplex interface which caused a lot of grief, which caused us to get the current one.
Why did we get a DECT VOIP phone? Because I was trying to save money of course! A small amount, granted. The idea was that we would drop our phone line and just rely on cable internet with VOIP for our house phone and mobiles to cover any outages. This worked well for 3 years. The calls were cheaper and the quality better, plus we had features on the VOIP line we would have had to pay for with a land line:
  • Voicemail to email
  • Incoming CLID
  • Itemised billing
Plus we could use our number even when we were away from home by logging in with MicroSIP.
Sadly our cable provider kept hiking up the price in increments, and eventually an offer came along that offered more bandwidth with a land line for less money, and with the added bonus of free outbound weekend calls. (I am aware that Virgin did free weekend calls, but the additional cost for the land line was more than we spend on calls).
How to integrate these free calls into the current network? Well the n300ip has dial plans, they are basic but could be configured to route calls through either VOIP or the land line based on the number dialled. However the one thing it doesn't have is any logic related to dates and times. If BT's calls were cheaper than SIPGATE we might forgo the CLID and the itemised e-billing and the network voicemail, but during the week they aren't. 

Timed call routing on the cheap

The solution is a nifty script I popped together in python, the script uses libCurl, runs on Linux or Windows with suitable addition of libCurl and need python 3.3 (I leave it as an exercise for the more able to convert it so that it runs on all Python version.

The script runs Saturday morning when our server wakes from its slumber and again on Monday morning.
The call plan fields were captured by using wireshark and then edited using VIM, the script has to do session cookie handling for the password cookie, because I couldn't get libCurl (or Curl for that matter) to persist session cookies.
The functionality of the script is login, upload the call plan and then logout. The parameter is to toggle between enable.txt and disable.txt (the two call plans, enable puts UK landlines beginning 01 and 02 through the fixed line and disable.txt undos this by disabling those call plans). The script is very simple, if you change the call plans it will overwrite them.

Python Code

#!/usr/bin/env python3
import pycurl
from io import StringIO
try:
    from io import BytesIO
except ImportError:
    from StringIO import StringIO as BytesIO

import email

import argparse

def enable_disable(string):
     valid_values = ['enable','disable']
     value = str(string)
     if not value in valid_values:
        msg = "action is either enable or disable, you typed " % string
        raise argparse.ArgumentTypeError(msg)
     return value

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('action', choices=['enable','disable'] , nargs = 1,
                   help='either enable or disable, set the dialplan in enable.txt or disable.txt')

args = parser.parse_args()

def CallPlanFileName(x):
        return {
        "enable" : 'enable.txt' ,
        "disable" : 'disable.txt' }[x]

filename = CallPlanFileName(args.action[0])

#print (args.action[0])


## Callback function invoked when body data is ready
def stdout(buf):
    # Print body data to stdout
    import sys
    sys.stdout.write(buf)
    # Returning None implies that all bytes were written

## Callback function invoked when header data is ready
def stderr(buf):
    # Print header data to stderr
    import sys
    sys.stderr.write(buf)
    # Returning None implies that all bytes were written

body=BytesIO()
header=BytesIO()

c=pycurl.Curl()
c.setopt(c.URL,'http://192.168.XX.XX/login.html')
c.setopt(c.POSTFIELDS, 'language=1&password=XXXX')
c.setopt(c.WRITEFUNCTION, body.write)
c.setopt(pycurl.HEADERFUNCTION, header.write)
c.setopt(c.COOKIEFILE, '')  #Make Curl Cookie aware
c.perform()

with open('header.txt','wb'as h:
    h.write(header.getvalue())

with open('body.txt','wb'as b:
    b.write(body.getvalue())

request_line, headers_alone = ((header.getvalue()).decode('ISO-8859-1')).split('\r\n',1)
mhead = email.message_from_string(headers_alone)

print (mhead.as_string(True))
cookies = mhead['Set-Cookie']
print (cookies)
c.setopt(c.COOKIE, cookies)

with open(filename,'r'as f:
    data=f.read()
    c.setopt(c.POST,1)
    c.setopt(c.POSTFIELDS, data)
    c.setopt(c.URL,'http://192.168.XX.XX/settings_telephony_dialplan.html')
    c.perform()

c.setopt(c.URL, 'http://192.168.XX.XX/logout.html')
c.perform()
c.close()

exit()

Call plans

Enable.txt

del_dprno=30&dpr0_0=50000&dpr1_0=0&dpr2_0=&dpr4_0=0&dpr0_1=999&dpr1_1=7&dpr2_1=&dpr4_1=1&dpr0_2=200&dpr1_2=0&dpr2_2=&dpr4_2=2&dpr0_3=101&dpr1_3=7&dpr2_3=&dpr4_3=3&dpr0_4=111&dpr1_4=7&dpr2_4=&dpr4_4=4&dpr0_5=090&dpr1_5=255&dpr2_5=&dpr4_5=5&dpr0_6=90&dpr1_6=0&dpr2_6=&dpr4_6=6&dpr0_7=01&dpr1_7=7&dpr2_7=&dpr4_7=7&dpr0_8=02&dpr1_8=7&dpr2_8=&dpr4_8=8&dpr0_9=0845&dpr1_9=7&dpr2_9=&dpr4_9=9&dpr0_10=0870&dpr1_10=7&dpr2_10=&dpr4_10=10&dpr0=&dpr6=1&dpr1=0&dpr2=&access_code_isdn=&access_code_mode_isdn=0&access_code_voip=&access_code_mode_voip=0&access_code_min_digits=4

disable.txt

del_dprno=30&dpr0_0=50000&dpr1_0=0&dpr2_0=&dpr4_0=0&dpr0_1=999&dpr1_1=7&dpr2_1=&dpr4_1=1&dpr0_2=200&dpr1_2=0&dpr2_2=&dpr4_2=2&dpr0_3=101&dpr1_3=7&dpr2_3=&dpr4_3=3&dpr0_4=111&dpr1_4=7&dpr2_4=&dpr4_4=4&dpr0_5=090&dpr1_5=255&dpr2_5=&dpr4_5=5&dpr0_6=90&dpr1_6=0&dpr2_6=&dpr4_6=6&dpr0_7=01&dpr1_7=7&dpr2_7=&dpr4_7=7&dpr0_8=02&dpr1_8=7&dpr2_8=&dpr4_8=8&dpr0_9=0845&dpr1_9=7&dpr2_9=&dpr4_9=9&dpr0_10=0870&dpr1_10=7&dpr2_10=&dpr4_10=10&dpr0=&dpr6=1&dpr1=0&dpr2=&access_code_isdn=&access_code_mode_isdn=0&access_code_voip=&access_code_mode_voip=0&access_code_min_digits=4

Cron

My server isn't on all the time, it shuts down in the evening and doesn't start up again until everyone is up and about. Initially I was puzzled why my script wasn't having any effect at the weekends. Of course I set the time of the cron job to be midnight Friday and midnight Sunday, both at times my server was asleep. Here's the solution I use:
#                    Test if it is Saturday
@reboot              test $(date +\%u) -eq 6 && ( cd $HOME/bin; ./BT_CallPlan enable ) >> ~/BT.log
#                    Test if it is Monday
@reboot              test $(date +\%u) -eq 1 && ( cd $HOME/bin; ./BT_CallPlan disable ) >> ~/BT.log

Other details:

Our cable provider was Virgin Media, we replaced this with BT Infinity 1 
  • Virgin (30M down 2.5M up) - usually 20M down 1M up
  • BT Infinity 1 (38M down 9.5M up) - so far 34M down and 9M up (much better for telecommuting)
Our VOIP provider is SIPGATE
I sold the Home Hub 5 (£35) and bought an Huawei FTTC terminal adapter/router (which I put custom firmware on).
We use a Buffalo Airstation running OpenWRT (with Asterisk running on it for VOIP), this also provides IPV6 via Hurricane Electric, 2.5 and 5 GHz wireless N and remote access. 
When we needed analogues phone lines I used an old BT voyager ADSL router (ADSL disabled) as an ATA (logged into Asterisk as an extension), of course we now have a real analogue line :) .
Virgin Media super Hub (very poor piece of kit), was set to Modem mode due to it's appalling WIFI drop out rates, and general lack of configurable options.


Tuesday, December 3, 2013

I have entered the IPv6 Arena.
My setup was a mash up of configurations from various folks, and connectivity is achieved through a tunnel from the folks at Hurricane Electric.

Before I launch into how I did my configuration: DANGER! DANGER Will Scarlet! - IPv6 is routable, all of it all the time; we have all got lazy sitting behind our NAT routers, not worrying about stuff getting at us directly from the internet. Once you correctly setup one machine on your network as an IPv6 gateway, the chances are that ALL your machines will suddenly be publicly available via IPv6.
You have been warned!


Howto:

Before you start, your external IP address should be returning ICMP packets if it is pinged. On Virgin Media cable this is turned off by default. You will need to turn it back on or you won't be able to establish the tunnel.
Sign up for an IPv6 Tunnel at Hurricane Electric's website (http://tunnelbroker.net/ or select Free IPv6 Tunnel Broker from the HE home page).
After filling out the new user form, it will ask you to pick your nearest end point. I'm in the UK and I couldn't see any advantage to trying to pick a site in the US for my tunnel, so I picked London. You can only connect one tunnel to your external IP, and once you're setup, all your internal network machines will have public addresses via a routed network. If you delete and setup your tunnel again those addresses will change.
This is where I made my first mistake, I assume you're only just familiar with IPv6 addresses, so read them carefully. My IPv6 address for my router was only 1 digit different from my routed network address, and this got me confused.
The Example configurations will lead you in the right direction, but I actually found them to be less than complete. I'm using Ubuntu 13.10, my IPv6 endpoint has a static network configuration (I am not using Network Manager, all my network configuration is done in /etc/network/interfaces).

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:XXXX:YYYA:ZZZZ::2
netmask 64
endpoint 216.66.80.26
local 192.168.x.y
ttl 255
up ip -6 route add default dev he-ipv6
down ip -6 route del default dev he-ipv6

iface eth0 inet6 static
address 2001:XXXX:YYYB:ZZZZ::1
netmask 64

My mistake initially was not to realise that A and B were different :D

When you've setup your tunnel (you may stop there if only want one machine on your network to have IPv6 access to the internet), you will want to add two more things. Your internal network adapter will need an IPv6 address from the "routed IPv6" network (not the network that's wasted on your tunnel). And then you will need to advertise your route. 
The beauty of IPv6 is that it's all very self configuring, apart from a few niggles.
Once the tunnel's up, and the internal network interface has a "routed" address on it, you will need to advertise it to your local net. Install RADVD. It doesn't need any configuration, but here's where complication sets in: RADVD can advertise the IPv6 DNS, but Windows will only get IPv6 DNS from DHCPv6. Basically you end up setting up DHCPv6 just to advertise DNS for windows machines.
If your router also happens to be a webcache you can skip the routed address and RADVD in favour of http proxying over IPv4 and getting the cache server to do all the IPv6 magic.
My next trick is to try and make an all IPv6 machine that can still talk to the IPv4 internet.

Tuesday, January 22, 2013

We got hacked!
The house phone is an Asterisk PBX and our service provider is Sipgate. They informed me last Thursday that our system was compromised, due to some unusual call activity, but no more info than that. So we changed all our passwords for our SIP account. FAIL.
Saturday and Sunday and Monday saw more calls made; Sipgate support don't work weekends and we didn't notice until the call credit low warning hit my inbox on Monday evening. Another email to Sipgate, this time they tell us that our Asterisk PBX is making the calls, and no we can't have the money back. A quick check and lo! I allowed external guest extensions to connect to the PBX, and I didn't restrict the IP addresses of registering devices. DAMN! Ah well, you live and learn.
Fortunately Sipgate charge up front, and we only put £10 on at a time. The bad guys made off with £4-ish of calls, we don't have auto pay setup and we do get an alarm when the credit goes below £5. All told the most we can loose is £10 and this saves us £15 every month (no line rental).
So a quick crash course in securing Asterisk, and a dollop of iptables firewalling for the PBX and we're back up and running.

Friday, January 11, 2013

Three Challenge

Apparently 3/Three don't accept that I own the phone. Worrying; I suspect this is true for all mobile phone companies. Because I don't have the purchase receipt or the details of where it was originally bought, they won't accept that I am the owner. So what?
Well if the original owner phoned them up, read out the IMEI and said the phone had been stolen, they would block the phone. Fortunately they didn't register it, but I can't register it either.
My other motivation is that 3 will unlock the phone for £15.53 (apparently) whereas all the other places want about £24. I shan't be using 3 once the phone is unlocked ...
The system beggars belief to my mind; they sent me a SIM to my postal address, they can see from their network that I am calling from my handset (with the IMEI), you'd think they'd want to encourage people to register. At worst they've got some personal details they can bundle up and sell on (email, phone number address etc.) at best they've got that plus marketing data about the second hand market for their handsets, something they probably need to know about if they want to sell more new handsets.
Hopefully the seller will be forth coming with the store and the date of purchase which can then be used to confirm to three that I actually own the handset now and so it can be registered to me.
(and then promptly unlocked and switch to Giff Gaff :D).

Thursday, January 10, 2013

My new year's resolution will be to post more to the blog :D
So, I have bought a new phone and I may have become an early adopter. The phone is the Xperia J (aka st26i), it's locked to three at the moment, and so not in use. I have a free three sim, I've registered it with them and I'm waiting on unlock codes. In the mean time I will be taking it apart and posting photo's.
Three will unlock the handset for a fee (it was originally bought as a pay-as-you-go handset). However you have to register the handset with them. Currently I'm hoping that they will accept paypal as proof of purchase, if not I'm reliant on getting the original purchase receipt from the original owner.
Handset looks good, nice weight, great sound when used with my Nokia Lumia 920 headphones.
Can't wait to get it unlocked so I can use it with my regular network, also looking forward to removing all the Three network branding on the device.

Tuesday, December 18, 2012

New stylus!

So I picked up a new stylus for my Nexus. It's truly a wonderful thing. I am sooo pleased with it I had to hammer out this short post. A decent stylus & Grafitti is an amazingly fast way to enter text. Truly so much quicker than picking keys from the touch keyboard. Which stylus? This one:
from Amazon.
The tip is sponge, but covered in a knit cover. It glides! & the price is FAB!

Tuesday, November 27, 2012

Skype rewind on the nexus 7

So we all hate the new Skype with its fixed landscape mode. You want the old version back? Try installing from the Amazon Appstore. But be warned, if Google Play has auto update set, it will re-upgrade you to the latest version.

Monday, November 26, 2012

Furby Care and Resurrection

I recently went shopping with my wife and while in John Lewis we ended up in their toy department. To my surprise Furbies are back and have new features, and having checked out the web (slayer furbies) I went up into the loft to retrieve the original 1998 Furbies that I knew were still up there.
The Furbies had survived, mostly I think because they had developed faults which I hadn't fixed for their original owners (my 2 daughters).
Getting the Furbies going required a bit of sandpaper to refresh the battery terminals for one, and a jumper wire soldering on the other to bridge the broken battery compartment terminal.

Furby Care and resurrection:


  1. They don't wake up by themselves, you have to tip them upside down.
  2. They don't "learn" anything, it's all pre-programmed 
  3. They randomly generate their name and personality upon reset, the reset procedure is to turn them upside down, depress the tongue and hold it depressed and then press the reset stud in the base with a pen. 
  4. If they "jam" you can un-jam them using the reset stud on the bottom, this causes the single internal motor to run through a complete motion cycle backwards and forwards.
  5. Initial power up - this stumped me, they'd been in the loft for 10 years with no power, the first set of rechargeables I dumped in simple drained immediately without sparking any life, I was testing the Furbies with a test meter which is how I noticed the drop in voltage on the cells. The second set caused a little spark of life, but the Furby wasn't completely responsive until the third freshly charged set went in (they've survived now for 5 days on that set though). I think they must have some capacitative component that maintains a fairly large charge and drains the batteries realy quickly when depleted. In '98 we were fairly strapped for cash, I can't imagine a constant supply of duracel batteries would have been popular on our weekly shopping bill. 
  6. Their memory survived ten years! They woke up speaking English and wanting to play a game and be fed, which is presumably where they were up to in their "learning" when they were retired from animation. I reset one of them to test this, still can't work out there names though. 
  7. Tickle technique: I skinned one of the Furbies (there are guides on-line to tell you how to do this, use your favourite search engine :D ) because I thought the tickle sensor on the stomach of one of them wasn't working, however I discovered it's a rocker, the switch rotates around a vertical pivot; the easiest tickle technique for me is to hold the furby upright in cupped both hands, and use your thumbs alternately to rock the switch; you can also reach the back sensor with your fingers to "pet" the device using its' back sensor.
  8. Clapping slowly can get them to dance (they don't dance as good as the new ones though), they don't seem to respond to music with a fast beat.

That's as far as I've got with them. There are Furbish dictionaries, so you can decode what they're trying to say, putting two together and stimulating them accelerates the "stupid" one to the same level as the "clever one". I've seen them play hide and seek together with no interaction from me, both spooky and interesting.
I had thought I would use them to make an computer controlled animatronic Furby, but I think my girls might want their Furbies back now that they're working and we can afford the batteries :D
I have the makings of an IR sender in the loft from another project, the IR codes that the Furbies use to talk to one another are well documented now, to I may try to make them sneeze via IR for my next post on this topic.
That's all for now!

Haipad revisited.

Slatedroid: namko seems to have a working 3.0 kernel. So the Haipad is on charge, prior to upgrade. :) If OTG is working I will buy some USB temperature probes and see what we can do with them and perhaps even waterproofing the tablet for installation in the green house. Although there are so many cheap android on a stick devices now it's insane, it might be easier to just spend £30 on one of those (many have released kernels on slatedroid).

Friday, November 16, 2012

Amazon reviews and tablet Styli (Stylus, Styluses?)

I wrote a review for a (very cheap I must say) stylus. You can see the review here. The stylus is nothing special and after a few hours use I began to get really hacked off with how much it dragged. So? So I took it apart, (the silver ring comes off and that lets the "rubber" nib free. I tried stuffing paper in the nib to make it firmer (fail, tablet stops recognizing the touches). I tried bluetack in the nib (ditto). I gave up and went back to my finger. Then I had a brain wave while falling asleep, maybe cling film has a slippy enough surface. I mean cling film only sticks to itself right? Turns out this was a genius idea. Nib is firmer. Cling film is slippy enough to give positive pressure from writing on the tablet surface. I may mod this more by scotch tape on stylus so I don't rub the cling film off and to provide a better grip on the Barrel of the stylus.
I'm very happy with the result, I hope it lasts!

Thursday, November 8, 2012

My focus changed a bit, having come into some money, I invested in a Google Nexus 7. I haven't rooted it yet, but I wanted to list a few things I found a bit problematic about it. Being a bit of a BBC radio 4 listener, I was sad to discover that I couldn't play radio via iPlayer, this is cured by installing the BBC media player app. However this has one CONSIDERABLE draw back, it won't play in the background. I've tried other apps for listening to radio, I have a number of older Android devices and I thought I'd tried them all, but I was wrong. TuneIn! Plays Radio 4, has no ads, plays in the background, works on my X10 mini pro, works on my Tablet. Joy! What of my original tablet? Well I need a temperature controller for my wife's green house and my son is always wanting to nab my hardware so we will see ...

Tuesday, August 21, 2012

What, no posts?

Back from holidays, thinking about stuff to post. Here's a list of what I'm working on at the moment:
Sky Zone 2 dish, Humax FoxSat HD PVR with 2 LNB's and a DiSeqC switch (28.2E and 19.2E)
Cyclone Nano media player (android), aka XIOS DS, Geniatech Nano3 ATV510B
Raspberry PI as remote temperature sensor controller

The Sky dish is up and working so the write up for that should be along shortly!

Thursday, July 12, 2012

Adding Gapps to ICS Arnova 8b G3

NOTE: This is a blog for information purposes, if you brick your tablet by repeating this then on your own head be it!
Yesterday, I picked up an Arnova 8b G3 tablet for my parents. This was a bargain from Maplin! I  had to spend a little time adding the missing Google apps. How? I'm glad you asked!
First of all you need to get adb talking to the tablet; I download the latest android sdk from google and I'm using Linux here as my host machine (Ubuntu 12.04), so after unpacking the tgz file you have to execute tools\android (read the instructions for the sdk mostly page 2). Download the platform tools (you don't need anything more unless you're going to do some coding :D ).
Once the platform tools are down and installed you will need to edit your udev rules to get the tablet to be visible in ADB; here's the additional line to add to /etc/udev/rules.d/51-android.rules (I got the info for this from a google search) :
SUBSYSTEM=="usb", ATTR{idvendor}=="0e79", MODE="0666", GROUP=plugdev
Make sure you're in the plugdev group! If you're trying this with a different phone or table then lsusb will give you the info to use instead of 0x0e79 (my htc kaiser running cyanogen mod 7 is 0bb4 for instance, you should probably execute lsusb and check your tablet gives you this value too).
I did a reboot at this point to make sure udev updated. After the reboot running abd devices will  tell you if you're able to connect, my first mistake here was to not check that I'd got the usb cable plugged firmly in.
On the tablet go into the developer settings and enable usb debugging, then the following commands will help you prepare to install the missing gapps:
  • adb root - restarts adb on the device as root, if this fails you will need to do some more work.
  • abd remount - remounts /system in read/write mode (usually it's read only). ditto if this fails.
Now to install the apps! I downloaded the cyanogenmod9 Google apps from the cyanogenmod wiki. Once downloaded I unzipped them to a folder called gapps in the android sdk folder; execute the following commands in order installed all the gapps to the tablet:
  • export PATH=`pwd`/platform-tools:$PATH - set the path to include adb.
  • cd gapps
  • adb -p ./ sync system - pushes the current folder to the device using sync on the current folder.
Reboot the tablet, if all goes well this will take some time (you may get a pop-up during reboot about optimizing the applications, or about android updating).
Gmail will immediately update and you should be on your way. You can also turn off usb debuggnig.

Needless to say this took longer to work out than this short entry implies. There's a lot of duff info out there on the interwebs.

Friday, July 6, 2012

Haipad M7/Herotab C8 - Adding Serial ports internally.

This is a post for information only! If you trash your tablet by repeating this I am not responsible!
I killed my tablet with firmware for the Haipad M7+; basically the NAND flash was no longer capable of booting the Linux kernel from either NAND or from SD. There are techniques to get the NAND disabled temporarily, by shorting out pins on the flash chip, but I couldn't get them to work.
Time to add serial ports and work out how to fix it!

Initially I used single core wire, however, that put too much strain on the solder joints, this is cut down cable from a floppy disk drive connector. The trick here is to keep the bundle together, tin the wires carefully, and use a hot iron quickly to press them into contact with the cpu board pins.
I tinned the wires at 220degC and soldered to the board at 320degC. Test for shorts at each stage, not at the end!
Working with a magnifier and with small pins can be disorientating, so I put tape either side of where I was soldering. I use scotch tape as it doesn't leave a sticky residue.
You can see here that I used 6 wires for this, the red wire is for a 5V line, the other wire is for the GND for the serial ports. They're taped out of the way so that I don't melt them with the soldering iron.
When I cut the ribbon cable I left the outer 2 wires longer deliberately to reach the other parts of the circuit board. Pins 0 and 1 on the CPU/Ram/NAND board are GND.
The red line is taped out of the way until I can locate the 5V point I need to power the GPS that I'm thinking of installing. More tape to keep the ribbon cable against the side of the battery and away from the screw holes that secure the back of the case.
Break off a strip of 6 pins for the connector.5V,TX1,RX1,TX0,RX0,GND from left to right. Double sided tape to hold the connector out of the way and a fold of scotch tape to insulate until I work out whether to pierce the case and hot glue gun into a more permanent position.