£5 ePaper Weather Display – WeAct 1.54″ & ESP32 C3 Super

For a quick bank holiday weekend project, I’ve put together a cheap WeAct 1.54″ ePaper Module and ESP32 C3 Super mini development board, and have it sat next to my house router. At a quick glance I can see the forecast before we go out the door.

To keep things even more compact & simple, it uses the hub’s USB port for power. Not that it needs much, with the ePaper display taking up no power to keep the same image, and the ESP32 only waking up for a minute every half an hour to update the forecast!

Code for this project can be found in this GitHub repository; https://github.com/mattcuk/WeAct1.54-Weather-Display

The 3D printable stand display can be found on Makerworld; https://makerworld.com/en/models/2756614-display-stand-for-weact-1-54-esp32-c3-super

The ~£3 WeAct ePaper Modules like the 1.54″ SSD1681 display come with a connector & wires that lead to female Dupont connectors, making it easier to quickly connect the display to your development board. When pushing the connector into the back of the board, I found a pair of pliers handy for getting it in.

For this project I chose the £2 mini ESP32 C3 Super development board which is tiny! It can go into a low power draw deep-sleep mode, which is perfect for working with ePaper/E-Ink displays.

I’m not a soldering expert and chose to put the connector pins on pointing upwards. I did this because the underside of the board doesn’t have any components I could accidently fry with the soldering iron.

When working with the board I did end up struggling to press the Reset & Boot buttons, so I created a simple 3D printed tool to help reach them;

Here’s how I hooked up the WeAct 1.54″ display to the ESP32 C3 Super, including the wire colours from the included connector cable.

WeAct PinWeAct Wire ColourESP32 C3 PinESP32 Feature
BUSYPurpleGPIO 1Mapped in code
RESOrangeGPIO 3Mapped in code
D/CWhiteGPIO 2Mapped in code
CSBlueGPIO 10Mapped in code
SCLGreenGPIO 4SCK
SDAYellowGPIO 6MOSI
GNDBlackGND
VCCRed3.3

Once the display and board are connected, and the code is uploaded & working you really need something to mount them into.. otherwise it looks like this :D

This spurred me on to create a minimalist 3D printed stand to mount the display and board into. There’s a clip for an ESP32 C3 Super development board to fit on the back.

There’s an optional (partial) cover that you can print if you have a mess of wires you’d like to conceal, like I do! And there’s a screw-on clip that can further secure the screen in place, but it should be fine without it.

As you’ll see in the code on GitHub, you’ll need an account with OpenWeather to be able to use their v3 API, which also needs you to enter some payment details for if you go over 1000 calls a day (you’ll likely never get close to even 100 calls a day).

Once you’ve entered your API key and wifi details into owm_credentials.h, you can upload the code to the board and everything will hopefully work first time!

The code I used for this project is based on this repo. I made a bunch of changes to solve issues had I with the hardware and published it in my own repo;

https://github.com/mattcuk/WeAct1.54-Weather-Display

One of the primary issues I had with the ESP32 C3 Super was that it steadfastly refused to connect to wifi. In the end, the solution that worked for me was to set the wifi power level of the board to 40% using this line of code;

esp_wifi_set_max_tx_power(40);

Overall, this has been an enjoyable (and cheap!) project to build. If you give it a go please leave a comment on this blog to say how it went, and if you could leave a picture of your build on the Makerworld 3D model that’d be awesome!

3D Printed Plumbing Tools .. Really? 🤔

Whilst attempting some DIY to replace a faulty bathroom tap, I needed a tap spanner to remove the old taps. That’s not a tool I have. They’re not expensive at around £10, but for something I’m only expecting to use once I thought I’d try designing and 3D printing one.

It surprised me that I couldn’t find an existing design, which made me wonder whether it was a bad idea, and that a PLA print would be too weak. I went ahead anyway.. not much to lose!

It’s worth noting that days later, I discovered that there were some designs out there, but they mostly used American terminology like ‘faucet’ and ‘box wrench’. However, I was really happy to create my own, and the dimensions are guaranteed to be exactly what I need.

Designing it in Onshape was straightforward. I started off defining the main measurements as variables. This makes it a lot easier to tweak the dimensions after doing test prints, or create different variants of the same tool.

When size/fit matters, I’ll do a test print using the smallest amount of filament possible. In this case I needed to get the tool head exactly right for the hex nut.

After importing the STL into Bambu Studio, I use ‘Cut’ to leave a small piece to print, which can be used to check the size is exactly right for the job.

Once that fits perfectly, I can print the full model with the confidence it’ll turn out great without wasting a few hours and a bunch of filament.

I could instantly feel how solid the printed tool was, but I still wondered how the layer lines would hold up to the torque needed to unstick a 15yr old fixing nut.. turns out it worked brilliantly! I definitely needed the small hole I put in the base of the design, where I used a hex key for extra leverage.

The new tap needed a slightly different hex nut size, plus the tool didn’t need to be as long due to the flexible hole tails (used in most modern taps). Thanks to the variables, it was a case of duping the design & adjusting them to what I needed.

There were a few other designs I worked on for this DIY project, and they are (links to Makerworld, ready for printing);

After learning a lot about fitting a replacement sink tap, I created a video containing some tips and the tools I printed along the way. If you’re thinking of taking on a small project like this, I hope it helps!

Hanimex E300 Reborn: Screen Mod Project 📺

The Hanimex E300 is a wonderfully quirky vintage film editor from the 1970s. You can usually pick one up second hand for around £45 (I got lucky and snagged mine for £21 including postage!).

Update: It was great to see this project featured on Hackaday!

In 2022 I saw VEEB Projects mod their E300 with a Raspberry Pi, LCD screen and a custom keyboard. It looked fantastic, but I wanted to take a different approach: no Raspberry Pi, just a clean HDMI input so you can plug in whatever device you like. Another goal I had was to document the project so that anyone can follow along.

The final video in my DIY series gives a full tour of the finished build!

As you can see, the HDMI socket on the side allowing me to hook up whatever device I like, whether that’s a gaming console, Raspberry Pi or Fire TV stick.

The LCD screen used is on AliExpress here; https://s.click.aliexpress.com/e/_Dch4PYr

The Bosch screwdriver I used during the project is available here. Note that the IXO 7 (latest model) doesn’t have variable speed like the IXO 6, which is a downgrade in my opinion, nor does it come with a hard case as standard. Sigh.

Across the series I cover everything from disassembly of the original internals, to fitting the new screen, adding the HDMI port, and dealing with the tight internal space. If you’re thinking of doing a similar mod, the playlist walks through each step.

Here are a few pictures showing the insides which will probably help if you want to do a similar project. You’ll see these in the video series too.

Original insides.. there’s not much to remove!
Power adapter in place and case has been cut to allow mounting of the LCD screen.
LCD screen and driver board added with temporary fixings. IR receiver is on the left.
Hooking up the HDMI port. The IR receiver is ready to be glued over a hole so the remote control can be used through the front panel.

It’s been a hugely satisfying project to work on, and I love how the E300 now blends its original retro charm with modern functionality.

Get Better Speed Camera Alerts in Google Maps with this TomTom AmiGO Replacement

For nearly 10 years I used TomTom Amigo’s overlay mode for better speed camera alerts in Google Maps, frustratingly in October 2025 they rebranded the Amigo app and completely removed the overlay feature.

After some research and testing I found a great alternative in the form of Miofive UK Speed Cameras (Play store link), which I’ve reviewed in the video below & show the range of options available. This app isn’t available in all countries, but has a version for Australia (Play store link).

In my testing I’ve found it to be just as accurate as TomTom, and I really like being able to choose from different overlay styles. The app will detect when you have Google Maps running & automatically switch on the overlay, which is a really nice touch.

As you’ll hear in the video, it triggers a voice alert when you’re 500m from a camera, tells you what the speed limit is and then proceeds to count down every 100m until you’ve passed it. The overlay will highlight in red if you’re at, or exceeding, the limit for the road.

The only thing I’d really like is to be able to customise the alerting so that you can turn off the distance based countdown, or switch the voice off & just have notification sounds.

You may also be interested in starting Google Maps with the tap of an NFC tag, in which case I can recommend this video, where I use an app called Automate to detect an NFC tag and start both Google Maps & Miofive automatically.

3D Printing – Beginner Essentials

The 3D Printer

I recently bought the Bambu Lab A1 Mini. All the reviews about the A1 Mini were very positive, and any downsides, like the 180mm build plate, I could live with. Plus, it was cheap enough to get at £169 without me worrying that I’d regret my purchase if I didn’t use it much after a year!

It’s very much a plug-and-play device where you can unbox and be printing within 20 minutes. After around 25 prints, the only trouble I had was tangled filament, which was easily resolved by respooling about a meters’ worth.

Essential 3D Prints

When you get the A1 Mini printer there are six 3D models that I’d recommend to enhance your setup. They’re perfect for starting out & more practical than printing a ‘Benchy’.

A1 Mini Carry Handle

Compact Poop Bucket

PTFE Tube & Cable Clips
Filament Spool Clip

Bed Scraper Tool (use sparingly.. rarely needed)

Mini AMS Dust Cover

Essential Accessories / Tools

These are what I’d consider essential buys when you’re first starting out.

£3 Digital Caliper; https://s.click.aliexpress.com/e/_oFzjz5u essential for designing your own 3D models!
£5 3D Printer tool kit; https://s.click.aliexpress.com/e/_opOUzhS there are multiple kits to choose from, but the trimming knife, scraper, cleaning needle, tweezers, and pliers deburring kit is more than enough IMO.
£6 Storage box (216x165x95mm); https://s.click.aliexpress.com/e/_oo4LAOo sure you could print one, but this is cheap, well built & has foam inserts. Great for storing all your accessories.
£3 Humidity sensors; https://s.click.aliexpress.com/e/_oEkxWzO for putting with your filament to warn you when the humidity is too high.
£7 Amazon Vacuum Bags and Hand Pump; https://amzn.to/4nyTVJL for storing your filament away from moisture.
£3 Desiccant; https://s.click.aliexpress.com/e/_oopfE76 orange reusable silica gel beads for keeping moisture away from your filament in storage. Allow 50g per spool. In v.sunny weather you can even dry them outdoors.
£50 Ikea Air purifier; https://www.ikea.com/gb/en/p/foernuftig-air-purifier-white-10461963/ this gives you a level of confidence that you’re not filling your room with microplastics. In my tests it does a fantastic job filtering PM2.5 particles. New filters are £5 each.
£6 Dust Cover; https://s.click.aliexpress.com/e/_ooUYWgk There are times that you won’t be using your 3D printer for a while, and this dust cover is the perfect size for the A1 Mini (45x45x48cm).

Accessory to Avoid (or get a better one)

One accessory to avoid is a cheap £6 AliExpress electric vacuum; when I tested this against the hand pump that came with the Amazon Basics sealable bags I found it was a complete waste of money. This video shows you how bad it was;

Designing Your Own Models

After some research I found that Onshape (free tier) would likely fit my needs; it had the features I needed for more complex designs (Tinkercad was too limited) and could run in a web browser (Fusion360 doesn’t, and seemed to have a history of limiting features for free users).

There are some great tutorial videos for Onshape on the Teaching Tech channel on YouTube which I’d highly recommend.

I started out with mostly functional designs that solved household problems, including a key-hanger, lid storage for Tefal pans, remote control holders, Ikea Micke desk hole filler, and a sun shade for my laptop’s webcam.

Having designs that I wanted to create helped me learn Onshape more than just playing with sample projects.

Publishing my designs onto Makerworld, the Bambu Lab 3D model site, was very straight forward. From there, other users can take your design and send it directly to their printer without needing to use slicing software on a PC.. it keeps things super-simple for casual users who just want to print a pre-made design with the minimum of fuss.

Hope this was useful.. let me know in the comments if you have any questions.

Add Authentication to Azure Free Tier Static Web Apps

All the tutorials and tips I’ve seen about securing an Azure Static Web App seem to end up with you needing to purchase the Standard plan which costs $9 a month; way beyond what I want to pay for a small hobby project.

After a lot of experimentation, I’ve found how to add authentication to a static site whilst still using the free tier! It’ll allow you to secure your site to only the users you invite, and doesn’t need any AAD configuration.

This video takes you through how to set it up on your site!

The first step is to create a staticwebapp.config.json file in the root of your project. Then paste in this configuration..

{
  "navigationFallback": {
    "rewrite": "/index.html"
  },
  "routes": [
    {
      "route": "/*",
      "allowedRoles": [ "authenticated" ]
    }
  ],
  "responseOverrides": {
    "401": {
      "statusCode": 302,
      "redirect": "/.auth/login/aad"
    }
  }
}

The JSON is from this Microsoft article. However, there’s a big problem with it; the allowed role of ‘authenticated’ lets ANYONE with a Microsoft account log into your site!

I don’t think the article makes this clear enough, and at first you assume it’s restricted it to your Azure Tenant, until you think to test it with another login.

Here’s the solution… replace ‘authenticated’ with your own custom role name (e.g. ‘letmein’), then go to the Role management pane of your Static Web App & invite your account, entering your custom role name in the Role field. E.g.

Generate an Invite link, visit the link, and you’re done!

This completely locks down your site, making it invite only.. all for £0 on the free plan.

Update or Create Azure Resources using a Logic App

There isn’t much information on this topic, so I thought it was worth a quick blog post. In DevOps, there’s often a requirement to update or create an Azure resource automatically, and for automation I tend to look at Logic Apps first, which I’ve blogged about previously (TL;DR they’re brilliant!).

You could use Terraform to update (or create) resources, but for small things like this it seems overkill.

We had a requirement to enable SFTP on a Storage Account temporarily (saves cost, as well as reducing the attack surface), but it was initially difficult to see how to automate this.

It turns out it’s quite straight forward; you can use the Azure Resource Manager actions to set the ‘isSftpEnabled’ property. Here’s how you can configure the ‘Create or update a resource’ action to enable SFTP…

You can use Resource Explorer (in the Azure Portal) to help figure out the Properties you can set…

Opening the Resource Explorer from ‘All Services’

This tutorial video is a good place to start if you want to see this in a bit more depth…

RWG Mobile Balance Display & Tracker

Both my kids have been using a free SIM from Three which offered a ‘lifetime’ allowance of 100Mb of data per month; it worked well and we were happy with it, until Three decided ‘lifetime’ didn’t mean forever & it stopped working in late 2023.

The replacement I found is with RWG Mobile (which is reselling the service from Now). They have a ‘Teaser’ plan at £2 a month which gives you 100 minutes, 100 texts, and 750Mb of data each month. I had no issues installing the SIM & porting the number across.

However, there’s no mobile app for the kids to keep an eye on their balance, and when I contacted RWG asking about this I got no reply from their support email (which I thought was quite poor service).

There is a number you can text to find out your balance, but that’s faffy for the kids to use, and I know I can do one better! There an app for Android called Automate which allows you to do no-code programming, and I’ve used it for all sorts of things in the past.

For this project I wrote 3 Flows in Automate;

1. Balance Checker – this sends a text message to a 669 with ‘info ukrwg1’. This is how you’d normally request a balance update via SMS. You can find out more on their support page here.

Here’s the Flow;

After creating that Flow, I added the a Widget to the homescreen that’s a shortcut to the Flow; the child can easily find out their balance in 1 tap.

The phone pops up the contents of the text message that’s sent in response;

2. Balance Logger – this runs in the background all the time & looks for a text message coming in from 669, i.e. the balance message. It’ll take the body of the text and send it to an Azure Logic App; more on that in a bit!

3. Balance Scheduler – this runs in the background all the time & triggers the balance check at 8am on Monday & Thursday.

So that’s 3 really simple automations running on the phone.

Next I created a Logic App in Azure which takes the contents of the balance text message, extracts the data & stores it in a Google Sheet. The Logic App can also alert me if their balance is low via email.

The finished Logic App looks like this;

The code in the ‘Execute JavaScript Code’ action block is there to extract the information from the text message, like how many minutes & data remains.

var sms = workflowContext.trigger.outputs.body;
// var sms = `Kid1: You have 100 minutes, 100 texts, 748 MB of your RWG UK Teaser bundle remaining`;

var regex = new RegExp('(\\w+)\\:.*?(\\d+) minutes.*?(\\d+) texts.*?(\\d+) MB', 'gm');

var m = regex.exec(sms);

return { "name": m[1], "minutes": parseInt(m[2]), "sms": parseInt(m[3]), "data": parseInt(m[4])};

The data is then pushed into a Google Sheet, which tracks the balance over time;

That also allows me to create a simple dashboard that takes data from the last row of the sheet(s) to give me an overview of their balance;

The function you need for looking up data from the last row is like this;

=INDEX(Kid1!C2:C,COUNTA(Kid1!C2:C),1)

Hopefully this helped give you a few ideas of what you can do with Automate & cheap cloud-based resources like Logic Apps.

If you find value in what I’ve created, I’d be incredibly grateful if you considered showing your appreciation with a donation to my tip jar. Even the smallest contribution means the world to me and fuels my passion to keep creating and sharing. Thank you from the bottom of my heart for your kindness and support – it truly makes my day! 💚

You can send a tip through this link, or the QR code below;

Full Browser History Search in Chrome using OmniHistoryPlus

An extension I used for years was called Fauxbar, which used an algorithm to create a much better (and fuller) experience when typing in a site you know you visited & want to return to.

Unfortunately, Fauxbar made extensive use of WebSQL, which was deprecated in newer versions of Chrome (hidden under a feature flag) and removed entirely from Chrome 123. It’s complex extension, and difficult to migrate to Manifest V3.. I had a brief try, but it was too much for me to tackle as a hobby project.

However, in some brief experiments with writing my first Chrome Extension, I found that the Chrome API is actually pretty good at searching your browse history (using chrome.history.search), and it’s really straight forward to present the results in the omnibar (using chrome.omnibox.onInputChanged).

This is when OmniHistoryPlus was born & is a great replacement for Fauxbar.

You activate it from the omnibar by typing ‘f’ followed by a tab or space, then you just search for a site you’ve visited; the results are more complete than you’d get from Chrome, and not muddied by web search results.

You can install the extension from the Chrome Web Store here.

And you’ll find the source code on GitHub here; https://github.com/mattcuk/OmniHistoryPlus

Give OmniHistoryPlus a try; you’ll find it’s a great alternative to Fauxbar, and gives you much better results than Chrome normally does!

Crowdfunding for a ‘new tab’ page

While OmniHistoryPlus does a great job of searching your browse history, one thing it currently lacks is a search bar on the ‘New Tab’ page. Implementing this functionality would require a significant amount of additional coding, and I’m not entirely sure how many users would find it truly beneficial. However, I’ve come up with an idea – a crowdfunding campaign!

If we can reach a modest goal of £250 in donations, I’ll create a ‘New Tab’ page that will allow you to seamlessly search through your browsing history right from that central hub. In addition to the search functionality, I’ll also incorporate a tiled view, transforming the ‘New Tab’ page into a personalized launchpad for your favourite websites. With just a few clicks, you’ll be able to access your most frequently visited destinations, streamlining your browsing experience like Fauxbar did.

This campaign isn’t just about adding new features; it’s about fostering a collaborative relationship with the OmniHistoryPlus community. Your contributions will directly shape the future of this extension, ensuring that it continues to evolve and cater to your specific needs. So, if you’re as excited as I am about these upcoming enhancements, I encourage you to visit the campaign page and lend your support. Together, we can take OmniHistoryPlus to new heights, making it an even more indispensable tool for your daily browsing adventures.

Or, if you just want to say thanks, feel free to buy me a coffee! 💚

How to get Xbox/PC Game Pass for FREE!

Microsoft have a programme called Microsoft Rewards, which allows you to earn points for various (very simple & quick) activities; there are daily tasks, searching using Bing, and reading news articles.

This video shows you the app I use, how many points you can expect to earn, and how long it should take to save enough to redeem a Game Pass.

How to get Google One 100Gb FREE for a year.. every year!

Google One is a subscription service which gives you extra Cloud storage, as well as a few other perks such as a basic VPN. If you have a family, you can share the subscription benefits with them for no extra cost, which is quite nice.

The first tier of Google One gives you 100Gb of storage for £15.99 (GBP) a month, which isn’t too bad, but free is better, right?!

You can actually get it for free using a combination of Google Opinion Rewards and Google Play Weekly Prizes.

The Google Opinion Rewards app lets you earn rewards for sharing your opinions through short surveys, often based around shops you’ve visited.. be totally honest; if it catches you lying it’ll realise & reduce the number of surveys it gives you!

One of the more recent additions to Google Opinion Rewards are Receipt Tasks, which ask you to take a picture of a receipt from a particular store you visited; it certainly prefers certain stores over others.. I can bet it’ll ask for a Coop receipt, but it never wants one from my work cafeteria.

Here’s how much I’ve earned in Google Opinion Rewards over the past 9 months;


The other app where you can earn Play credit is via the Google Play app itself.. take a look in your Points and you’ll find a tab called Perks where you can tap to get a weekly prize; they say you could win up to 100 points, but I’ve never got more than about 6. You can cash in 100 points for £1.

Here’s how much I’ve earned in Google Play Weekly Prizes over the past 9 months;


This video goes into everything in a bit more detail; please give me a Like if you’ve found this helpful!

Toggling web ad-blocking via a Squid proxy

Squid is a popular open-source proxy that can be configured to block adverts. I run it on a Raspberry Pi & have my iPad Air and Samsung Galaxy S21 Ultra configured to use the proxy when connected to my Wifi at home. There are good articles on the web which show you how to set all this up, so I won’t go over it in this post.

One thing I needed was a way to easily turn the ad-blocking off & back on, since blocking ads sometimes breaks sites or links to sites (especially affiliate tracking links).

You can of course go into the network settings & remove the proxy configuration, then put it all back after you’re done, but this is a pain & I really wanted a 1-tap solution which would work on iOS & Android.

First, I wrote a bash script which would toggle the ads on/off.. this works by emptying/populating the adblock.txt file that Squid consumes & telling Squid to re-read it. Here’s the script I came up with;

/etc/squid/squid_ads_toggle.sh

if [ -s "/etc/squid/adblock.txt" ]; then
        : > /etc/squid/adblock.txt
        /usr/sbin/squid -k reconfigure
        echo "Adverts ENABLED" > /var/www/html/proxyadstoggle.out
else
        curl -sS -L --compressed "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex&showintro=0&mimetype=plaintext" > /etc/squid/adblock.txt
        /usr/sbin/squid -k reconfigure
        echo "Adverts DISABLED" > /var/www/html/proxyadstoggle.out
fi

Testing this from a command prompt worked, so the next thing I needed to do was be able to trigger it from a web server call. My Raspberry Pi already has Apache & PHP running, so that was the natural place to create a quick PHP page that executes the bash script;

/var/www/html/proxyadstoggle.php

<?php
        print ("Toggling ads on Squid proxy [");
        $exec = "sudo /etc/squid/squid_ads_toggle.sh";
        exec($exec, $output, $retval);
        print($retval."] - ");

        $file = file_get_contents('/var/www/html/proxyadstoggle.out', true);
        print($file);
?>

The last thing I needed to give permission for the web service to run the bash script, which uses visudo to allow the ‘www-data’ user to run it. Now, I realise this isn’t ideal, but I couldn’t find a better solution; please understand the security risks of doing this if you’re going to follow this guide.

sudo visudo

www-data ALL=(ALL) NOPASSWD: /etc/squid/squid_ads_toggle.sh

Testing this in a web browser worked, so next I could move on to triggering it from my iPad and Android phone.. I could just go to the page in a browser, but that felt a bit clunky & there are nicer ways to do this! :)

Shortcuts on iOS

‘Shortcuts’ is a really nice automation app that’s built into iOS; with just 2 steps, I can call the PHP page & output the result into a native popup notification. Here’s how it looks;

The shortcuts can be added to the slide-out widget panel in iOS, which make it really convenient to access!

Running the shortcut will display a notification like this;

Automate on Android

There isn’t a built-in equivalent of ‘Shortcuts’ on Android, but I do have Automate, which I’ve previously used in projects I’ve blogged about on here.

Here’s how the ‘Flow’ looks;

The HTTP Request block needs to save the output to a variable, like this;

And the Toast notification can then display what’s in the variable like this;

You can add the Flow to your home screen as a shortcut (via Automate, or through Widgets), and when you tap it you’ll see a notification like this;

And there you have it! An easy way to toggle ad-blocking on your phone or tablet. Those apps on iOS and Android open up a world of opportunities to integrate with other systems & do some really neat stuff.

If you find value in what I’ve created, I’d be incredibly grateful if you considered showing your appreciation with a donation to my tip jar. Even the smallest contribution means the world to me and fuels my passion to keep creating and sharing. Thank you from the bottom of my heart for your kindness and support – it truly makes my day! 💚

You can send a tip through this link, or the QR code below;

Replacing Samsung Steam Link with a Raspberry Pi 3 & audio issue solved!

On November 30th 2023, Samsung is set to actively remove the Steam Link app from their TVs, which is a huge shame since it works so well & allows us to stream games (like Drawful & Stick Fight) from the PC to the living room TV for the family to enjoy together.

After moving to a Raspberry Pi 4 for my home server, I had a spare Pi 3, and read there’s a Steam Link client available for it. I set about installing the latest OS image, which is where the problems started. Long story short.. Steam Link doesn’t work on Debian Bookworm (loads of errors to do with ‘unmet dependencies‘ for libavcodec58)..

I eventually found that the ‘Legacy’ image of Debian Bullseye is what I needed, and Steam Link installed & ran without any messing (at first!).

If you’re looking for how to install steam link, check out Steam’s page here.

The interface looked fine, but when streaming a game, the image didn’t fit the TV properly. That was fixed by altering the Steam Remote Play options to ‘Change desktop resolution to match streaming client’;

The next problem was having no audio on the TV. Looking at the output it said ‘Mix_OpenAudioDevice() failed: alsa: Unsupported audio format‘.

The fix for this was to alter various settings in /boot/config.txt (maybe start with dtoverlay if you want to figure out exactly what fixes it for you).

$ sudo nano /boot/config.txt

------------------------------

# enable these
hdmi_force_hotplug=1
hdmi_force_edid_audio=1
hdmi_drive=2

# change this (add the 'f' to 'kms')
dtoverlay=vc4-fkms-v3d

# add this (stops Steam Link complaining.. nothing to do with audio)
gpu_mem=512

Reboot the Pi, then use sudo raspi-config -> System -> Audio and select HDMI.

You should find the audio now works & you should have a pretty good Steam Link streaming experience!!

One thing you may want to do is have the Pi automatically run Steam Link when it boots, to do this, use settings in raspi-config to automatically log the Pi into the console, then add this entry to crontab;

$ crontab -e

----------------

# add this to the file...
@reboot /usr/bin/steamlink

Congratulations! You should now have a Steam Link client on your Pi that works just as well as the Samsung app.

Alexa, find me an alternative to IFTTT

On 31st October 2023, the built-in Alexa integration with IFTTT stopped working with very little notice given to its users. This post show how you can replace IFTTT and get your Alexa Routines back up and working!

I don’t have a lot of time invested in a complex IFTTT setup, but we do use it to tell the kids that dinner is ready using this flow;

  1. An Alexa Routine listens for, “Alexa, tell the kids dinner is ready”
  2. The Routine calls an IFTTT Recipe
  3. The IFTTT Recipe writes 2 text files to Dropbox containing commands to execute on the PC
  4. The kids’ PCs, which use the same Dropbox account, have AssistantComputerControl monitoring the text files
  5. As soon as AssistantComputerControl detects the text files it executes the command inside & deletes the file. In my case, it plays a sound telling the kids dinner is ready.

We can remove the Alexa Routine call to IFTTT by replacing it with a service called Voice Monkey. Voice Monkey has a lot more features, like being able to call a web service & have Alexa read out a response. I couldn’t do that with IFTTT!

If you still want to call a IFTTT Recipe, you can change the Recipe to be triggered by a HTTP request, then call that from your Voice Monkey Flow.

In my case, I wanted to remove IFTTT entirely from my workflow, so instead of having that write the text files to Dropbox, I did the same thing using an Azure Logic App, which I’ve blogged about before and have a video showing them in action here;

My new workflow is as follows;

  1. An Alexa Routine listens for, “Alexa, tell the kids dinner is ready”
  2. The Routine calls a Voice Monkey Flow
  3. The Flow makes a HTTP call to a Logic App, then responds with a custom message for Alexa to read out.
  4. The Logic App writes 2 text files to Dropbox containing commands to execute on the PC
  5. Our 2 kids’ PCs, which use the same Dropbox account, have AssistantComputerControl monitoring the text files
  6. As soon as AssistantComputerControl detects the text files it executes the command inside & deletes the file. In my case, it plays a sound telling the kids dinner is ready.

If you don’t need anything as fancy as Voice Money, you could try URL Switch, which is easier to set up, and lets you call any webservice/HTTP address. I gave that a go & it worked fine, but the options in Voice Monkey give a lot more flexibility & things to play with!

If you find value in what I’ve created, I’d be incredibly grateful if you considered showing your appreciation with a donation to my tip jar. Even the smallest contribution means the world to me and fuels my passion to keep creating and sharing. Thank you from the bottom of my heart for your kindness and support – it truly makes my day! 💚

You can send a tip through this link, or the QR code below;

Use your iPad as a display for your games console, any HDMI device.. or endoscope!

iOS 17 added support for UVC (USB Video Class) input devices, so that any iPad with a USB-C port can use an external camera, including USB capture cards.

This opens up a world of opportunities to use your iPad as a portable display for things like a game console (Xbox, PlayStation, Nintendo Switch), a device like the Raspberry Pi (making it very handy for debugging issues with a normally headless server), or even a $4 endoscope you can find on AliExpress!

Here are a couple of videos that show this feature in action;

Unless you’re just using a USB C endoscope, you’ll need a cheap HDMI capture dongle which you can plug into the iPad’s USB C port. The adapter I use is available here on Amazon; https://amzn.to/34xv7Lk

In my testing so far, the apps show very little latency and are great for playing games through.

The apps you can use for this so far are;

Feel free to leave a comment with any other apps you find!

Design a site like this with WordPress.com
Get started