Media Server for Chromecast Streaming

I have now switched to using a Chromecast for all our TV needs. I have an old Android phone (Moto G) that has been re-purposed as the remote. For local pre-downloaded content, I have a Media Server running Ubuntu 17.10. The best setup I have found for streaming this local content to the Chromecast is VideoStream.


VideoStream Install

The Android App can be found here:
On Linux, there is no native install so you need to use Chrome and install VideoStream as an extension:

As my server is headless, the install of Chrome and the VideoStream extension are done using ssh -X.

When you Pair your device, you also need to have Chrome open over SSH to receive the popup and accept the pairing.

Running VideoStream Headless on Boot

Create the following systemd service file: /etc/systemd/system/videostream.service

Description=VideoStream Server

ExecStart=/bin/bash xvfb-run google-chrome --app-id=cnciopoikihiagdjbjpnocolokfelagl


Streaming Apps

Netflix, TVNZ and TV3.


Meizu Flyme Notifications Fix

Meizu are making some really great value phones. The operating system they come with is a skinned version of Android called Flyme. By default notifications don’t work for Facebook messenger and the Google apps most people use. This can be resolved by modifying the settings in the pre-installed “Security” app as follows.

1. Open the Play Store and install the “Google” app by Google Inc. if it isn’t already installed. Install all the apps that you need to get notifications like Messenger or Gmail.

2. Open the “Security” app




3. Open “Accelerator”


4. Open the Settings page by clicking on the cog icon in the top right hand corner.


5. Open the “Memory acceleration whitelist”


6. Click on “ADD TO WHITELIST” and select the apps for which you want to enable notifications and run in the background.

7. Go back to the main menu of the Security app and open the “Permissions” page.



8. Open “Auto-launched apps” and enable all the apps you want to run in the background.


9. Back to the Permissions page then open “Notifications of apps”



10. Enable notification for all your chosen apps.

11. Back to the Permissions page and open “App management”



12.On the “App management” page scroll down to each of your chosen apps and ensure they have “Notification” enabled. E.g. for Facebook Messenger:



13. Back to the main menu for the “Security” app and select “Power”



14. Open “Standby management” (which will have the confusing heading App management as below)


15. Allow any apps that you want notifications from to run in the background.

And finally we’re done.




Vox Guitar Amp Reboxing

The Vox on stage with Sulks in a previous life

I ended up with a beat up little Vox AD30VT about a year ago. It has a number of presets to emulate some different amps which are mostly bad, but you can get a pretty nice sound if you go for the clean settings. It had been serving me well at band practice for some time as is conveniently portable but at 30W you need to run at almost full volume to compete with drums in a band setting. We played at a house party earlier this year where I let the rest of the bands also use it which unfortunately resulted in the speaker blowing up after 5 hours at full noise.

The Vox comes with a 10 inch speaker which don’t tend to be as common. I picked up a cheap 12 inch speaker from the Swop Shop that was out of a Fender Blues Junior. I was hoping the case would be just big enough to squeese a 12 in… but unfortunately not. With the help of an amatuer carpenter friend Paul we spent an afternoon whipping up a new box from some ply he had picked up in hard rubbish.


The box after being sealed up:


It definitely wasn’t designed with acoustics in mind, but I’m really happy with the sound of the amp. Although the Blues Jr. is only a 15W amp, it’s speaker is 50W so I can happily crank the amp without fear.

To try and avoid my cats scratching the speaker cone I covered the front in some rubber matt from Bunnings.



Const and pointers in C

The syntax of constant pointers in C can be confusing. Try reading from right to left, away from the variable name. E.g.

Pointer to a constant of type char:

const char *ptr_name;

Constant pointer to a variable of type char:

char *const ptr_name;

Constant pointer, to a constant of type char:

const char *const ptr_name;