Replacing an obsolete Brivo door access system: Ubiquiti’s UniFi Access Retrofit Hub 2

Whilst web design / development is my main day-to-day source of income, I have installed and managed a fair bit of WiFi and networking equipment over the years, both at home and in some of the co-working spaces1 that I’ve worked out of. I don’t consider myself in any way a networking expert but I do enjoy tinkering with this kind of stuff and I especially like having decent WiFi so it’s good to know how to troubleshoot problems.

Recently, the facilities technician at my workspace mentioned that the door access system for accessing the building was becoming obsolete. More specifically the existing “Brivo” based system which was using old “ACS5000” control units was becoming obsolete as of 30 April 2026. In practice, this means that whilst the door control units would still operate, they would no longer be available to be configured via the Brivo Access cloud-based control system. Therefore it would no longer be possible to add or remove access fobs from the system.

I didn’t really know anything about Brivo systems so the first step was to look and see if you could buy replacement units to fit them. Whilst I found a few units here and there on eBay it seems that Brivo really want you to use an authorised installer for any replacements. Meanwhile the company that did the original installation was contacted to give a quote for replacement and they came back with an estimate for supply and installation of at least ยฃ2,800 (excluding VAT) for each replacement control unit. Given that there are three units to replace this meant at least ยฃ9,000 to have the original installers do the replacement.

On top of the supply and installation cost there is also an ongoing subscription for Brivo Access which is somewhere in the region of ยฃ600 per year for this particular configuration. Additionally, it is strongly encouraged to have a hardware-specific maintenance contract with the existing supplier too, which meant that potentially even more cost would be involved. Given the not-insignificant outlay potentially involved it seemed worthwhile to have a look for alternative options.

UniFi Access Retrofit Hub 2

After a bit of research online I came across a product from Ubiquiti, specifically their “UniFi Access Retrofit Hub 2” product which is intended as a drop-in replacement for this type of legacy system. Again, I am not very familiar with door entry systems in general, but after a bit more research it seemed like this product should be perfect for the type of system in use here which is Brivo door controllers using “Wiegand” door readers.

So replacing the ACS5000 units with Retrofit Hubs would mean we could re-use the existing Wiegand door readers, lock hardware, door contacts, exit request devices and most of the existing wiring, avoiding the need for a full system replacement. Also, each Retrofit Hub, like the ACS5000 units they were replacing, can support and control two doors which again is perfect for this setup as there are four doors controlled by three control units.

Another reason the Retrofit Hub seemed like a good solution here is that the existing on-site WiFi network uses a Ubiquiti Dream Machine Pro (UDM-Pro) controller and WiFi access points. So the UDM-Pro controller would be able to run the UniFi Access software which would manage door access, configuring fobs for access, etc.

Whilst I was quietly confident this solution would work, I was a bit unsure about the process of disconnecting the old units and wiring up the new units. I have done a fair bit of networking but in this case there are various bits of wiring involved, linking into 12-volt power, 12-volt batteries and also 24-volt power for the door mechanism operation, so I was very wary of bricking something accidentally if I tried to do it myself. Fortunately the electrician who regularly works in this location is always up for tackling unusual tasks, so after taking a look at the wiring diagrams he was happy to help with the actual wiring up of the devices.

A drop-in hardware replacement

The actual hardware replacement work involved disconnecting and removing the ACS5000 controllers, identifying and remapping all existing wiring for both doors, and terminating these connections into the Retrofit Hub 2.

Just to be really cautious we first ordered one Retrofit Hub device and also one “Ubiquiti Retrofit PSU 12V” power supply, this way we could try one replacement first of all and if all went well then replace the remaining Brivo controllers.

There was a bit of trial and error by the electrician to get the wiring configuration correct, but once it was all wired up and connected to the network cable, the Retrofit Hub appeared as a new “UA Retrofit Hub 2” device in the UniFi Access software running on the UDM-Pro. I could then adopt it into the system and enable the Door 1 and Door 2 readers as required. The Retrofit Hub can work with Ubiquiti’s own “Retrofit Reader” device as well as “Wiegand Readers” so you can set which type of reader was in use as well as things like “Card Format” for the NFC access devices.

I exported all of the existing user accounts from Brivo Access including the existing UIDs for the fobs on that system, after massaging the data format a bit I was able to import it into UniFi Access. However, when I tried an existing fob I found that it wouldn’t work with the imported UIDs so I did have to re-add the NFC fobs back for each user. So not a huge issue, but it did mean that I had to get all fob-users to come on site so they could be added to the new system as it involves tapping a fob on a reader in order to add the NFC to their account.

After successfully replacing the first Brivo controller and getting door access working we then ordered Retrofit Hubs to replace the remaining two controllers. This time the electrician was able to re-use the existing 12-volt power supplies so we did not need to use Retrofit PSUs for these two, which saved a little bit more money.

Once the hubs were all replaced and configured, door access was then managed entirely through UniFi Site Manager / cloud access. This allows secure remote administration of the locally hosted UniFi controller so we can open and close doors remotely if needed as well as manage access schedules etc.

Cost comparison

In this case I think it has been a pretty successful and cost-effective solution. Hardware purchased for this replacement was:

On top of the hardware costs were 1-2 days labour for an electrician, my own time was voluntary but with a reasonable estimate of the cost of labour on our part of about ยฃ2,000 then this is likely less than 1/3rd of the cost of continuing with Brivo for this system. Additionally, there are no ongoing fees for the UniFi system for managing access, so there will be an annual saving of about ยฃ600 as the Brivo Access subscription is no longer required.

There was the advantage in this case that I am very familiar with Ubiquiti from a networking / WiFi management perspective and that there was already a Ubiquiti UDM-Pro controller on site. But the UDM-Pro costs less than ยฃ400 and there are cheaper options like Ubiquiti’s Cloud Gateway Max (UCG-Max) which is less than ยฃ200, so even if you didn’t have an existing Ubiquiti controller it’s a lot less outlay than sticking with Brivo for door access.

  1. RIP Fleet Collective โ†ฉ๏ธŽ

ChatGPT Wrapped

Spotify started the yearly “wrapped” trend back in 2016 giving you a roundup / overview of your music listening habits over the year, but now many other services are doing a “wrapped” style roundup with Apple Music, YouTube and even Lidl supermarket did one for your 2025 annual shopping habits in their Lidl plus app!

ChatGPT also added a specific “Your Year with ChatGPT” option where you could see your activity over the year which highlights the number of conversations, messages, topics explored etc (tip: type “Your Year with ChatGPT” into a prompt and it will generate this for you).

Whilst it’s interesting to see the various activity within ChatGPT one thing they don’t highlight are the resources that were used in the process, e.g. things like energy, water, CO2 emissions.

The resource usage of AI / AI data centres is a huge topic and it is difficult to get clear details of exactly how much energy is being consumed when you enter a prompt into ChatGPT, there have definitely been some extremely exaggerated figures of water usage thrown around but equally there is a lack of clear transparency from companies like OpenAI, Anthropic, Microsoft etc.

Despite this challenge I thought it would be good to have an alternative ChatGPT “wrapped” tool and at least attempt to help us see how our usage of ChatGPT measures up. The figures I’ve used are based on general data about AI usage / data centres so not strictly what ChatGPT uses so you could swap out “ChatGPT and insert the name of whichever AI company you might be using.

(Note I’ve included some specific info below the tool in “How are these calculated?“, if you disagree or have any better statistics then please do leave a comment, I’m trying to base this on real data which as I’ve said is a little hard to ascertain exact numbers).

So, finally, I present my version of “ChatGPT Wrapped”:

Your ChatGPT Wrapped

How are these calculated?

Estimates in this tool are based on publicly available research into large language model inference, data centre electricity use, cooling infrastructure, and agricultural water footprints.

Independent investigations have shown that the environmental footprint of an individual AI query can vary significantly depending on the model used, data centre location, cooling method, and electricity grid. As a result, no single โ€œper-queryโ€ value can be considered definitive.

To make these comparisons concrete, this tool uses the following per-query assumptions:

  • Energy: ~0.0005 kWh per ChatGPT query (0.5 watt-hours)
  • Water: ~0.005 litres per ChatGPT query (5 millilitres)
  • COโ‚‚: ~0.0003 kg per ChatGPT query (0.3 grams)

Values shown are mid-range averages intended for awareness and comparison, not precise accounting.

You may see much lower water-use figures quoted elsewhere, including estimates from OpenAI that focus on direct, on-site cooling water at highly optimised data centres. This tool uses broader, system-level estimates that also account for indirect water use associated with electricity generation and supporting infrastructure.

In addition, real-world AI usage varies widely. Simple text prompts typically require less compute than image generation, longer conversations, or multi-step analysis. The values shown here are intended to reflect an average across a mix of common usage patterns rather than a best-case scenario.

Why do these numbers vary?

AI systems donโ€™t operate in a single, fixed environment. The resources required to generate a response depend on where and how that response is produced, and on the wider systems that support it. For this reason, estimates of energy, water, and emissions are best understood as ranges rather than exact values. The figures shown here are mid-range estimates intended to provide context, not precise measurement.

iPhone view of 2025

Here is my annual “iPhone view” video for 2025. All images were either taken directly with my iPhone, screenshot or copied onto it in 2025, these are then compiled together into a video.

The audio track is self-composed in GarageBand, with sound samples from Steve Jobs commencement speech at Stanford in 2005.

This year the video is approximately 2 minutes and 3 seconds long.

There are now 16 years(!) of “iPhone view” videos in my “iPhone view…” playlist.

Open/Close iOS app – now FREE

I recently did a minor update to the Open/Close iOS app that I made a few years ago to give it some visual compatibility with the new iOS 26 interface updates.

With this update I decided to make the app a free download from the App Store as I would prefer more people downloaded it and hopefully were encouraged to use it to go check out the Open/Close street art trails for themselves.

When I first built the app circa 2019 it was an opportunity for me to get some experience developing an iOS app, and I also thought that maybe if it sold enough copies of the app then I could donate a share of profits to the Open/Close project.

However, sales of the app have always been pretty low, so I’d rather people were able to download the app and find out more about the Open/Close trails, so please do download it if you’re interested in checking out the app and the Open/Close trails.

Download on the App Store

If you enjoy the app and more specifically you enjoy the Open/Close street art trails then do please consider donating to them and supporting the work they do.

Projects like Open/Close really do make a big difference to Dundee by “injecting life to the alleyways and forgotten corners of the city“, so follow Open/Close on Instagram, check out their website at openclosedundee.co.uk, and go check out the trails!

iPhone view of 2024

Here is my annual “iPhone view” video for 2024. All images were either taken directly with my iPhone, screenshot or copied onto it in 2024, these are then compiled together into approximately three minutes and 10 seconds.

The audio track is self-composed in GarageBand, with sound samples from a 1953 speech by W.E.B Du Bois.

This year the video is approximately 3 minutes and 10 seconds long.

There are now 15 years(!) of “iPhone view” videos in my “iPhone view…” playlist.

The Nokia Design Archive

The Nokia Design Archive is a digital portal covering over 20 years of Nokia’s digital design history that has been pulled together and launched in January 2025 by Aalto University in Finland.

There is so much stuff there to explore such as sketches, photographs and videos, both publicly seen and behind the scenes work on the many, many devices that Nokia produced (and many that never saw the light of day):

https://nokiadesignarchive.aalto.fi

Screenshot of the interface of the Nokia Design Archive

I’ve written a few posts mentioning Nokia over the years on this site and I owned and enjoyed using quite a few of their mobile devices in the early 2000’s. In 2003, a few years before the iPhone disrupted many of the incumbent mobile device companies, Nokia stood out as being a company willing to try many different formats and ideas.

So much of what Nokia did was ahead of its time, but unfortunately also was ahead of the widespread, cheap mobile data access that we now take for granted. There is a ton of stuff in the archive to look through, but it’s a fantastic resource if you want to find out more about the design processes and thinking that was going at Nokia.

N-Gage

I wrote an article “Dis-N-Gaged” back in 2010(!) where I looked at the rise and fall of the N-Gage “mobile game deck”1, I loved the N-Gage device and still have mine and its original box along with Tony Hawk Pro Skater and Tomb Raider games. Mobile connectivity just wasn’t widespread and cheap enough to make some of the multi-layer or location-aware goals for this device a compelling reality.

This device was really impractical as a phone, but I loved it. It’s now proudly one of my favourite amongst the 12 “Handheld Heroes2 illustrations I made a few years ago:

N95, N80 and Symbian OS

Despite the demise of the N-Gage I still used Nokia phones for a few years before eventually getting an iPhone, the Nokia N80 and the Nokia N95 being a couple of my favourite devices.

The Symbian operating system these phones used was kind of like the linux of mobile phones, there was a lot of software available for them3 and Nokia had some interesting experimental software such as running the Apache webserver directly on your phone so you could make your phone serve up websites โ€“ why? I’m not really sure, but I loved that there was a lot of experimentation going on within Nokia’s world. It also worked well with Apple computers, you could sync calendars and contacts to it and easily copy of photos from the device to your Mac.

I think Blackberry often gets credited as being the defining mobile device before the iPhone came along, but I think that Nokia deserves much more credit for the massive impact and breaking of ground for mobile computing devices that it did in the early 2000s.

Nokia Push4 is a great example of their experimentation, this involved putting sensors on skateboards and snowboards to track the telemetry such as rotations, flips, height, speed etc. You could share your location, movements, tricks etc and “compete” with other people elsewhere in the world.


  1. “Mobile game deck” is how Nokia referred to the N-Gage devices rather than a mobile phone. โ†ฉ๏ธŽ
  2. I’ve made a few t-shirts and also an iMessage sticker pack for iOS devices โ†ฉ๏ธŽ
  3. Most games on mobile devices at that time were fairly expensive JAVA apps, limited by the lack of affordable mobile data. Also, remember WAP? I haven’t thought about that for a while! โ†ฉ๏ธŽ
  4. I wrote more about Nokia Push in this post: Nokia N-Gage โ€“ another โ€œHandheld Heroโ€. โ†ฉ๏ธŽ

The fourth quarter

When I was at art college one of my classmates, Stuart, did a film project where he got two of us to eat a whole chocolate cake each. He set up two cameras, one on each of us filming continuously as we ate the cake. These cakes were family sized cakes, extremely rich, chocolatey cakes with multiple kinds of chocolate all over the outside.

We started to eat the cakes, they were really delicious cakes, sweet and tasty. We both devoured the first quarter of the cake, no problem, this was an amazing thing to eat, super tasty.

The second quarter of the cake tasted great too, it was still nice to eat, by the end of this piece I was starting to feel quite full of cake.

On to the third quarter it started to feel slower going, chewing the cake was taking longer, the taste was a little too sweet now, my taste buds were no longer excited by the sugary taste. There was now a bit of reluctance when it came to putting mouthfuls of cake into my mouth, I would most definitely have been more than happy to stop eating cake at this point.

The fourth quarter, starting this piece I was definitely forcing myself to eat it, every spoon felt like putting something horrible into my mouth, the rich, sweet, sugar now making me feel sick the more I ate of it. My body reacting with every bite, as I chewed what was once tasty chocolate that now was like the grossest thing I could be putting in my body. Swallowing was slow, fighting the rising urge in my body to throw up. This fourth quarter took a long time to eat, there was no joy in the eating now, compelled to eat it as the aim was to finish the whole cake and get it done.

This experience describes how work projects seem to go sometimes, I enjoy the work I do, but every so often thereโ€™s a โ€œfourth quarterโ€ and it becomes extremely hard going, trying to get through those final mouthfuls of cake.

What if I bought Apple stock instead?

[Update 13 April 2026: I have updated the share price to what to is as of today, approx $259]

This little tool is something I threw together after realising that it was over 20 years since I bought my first iPod, it was a 40GB iPod and cost about ยฃ3001 at the time if I recall correctly. The thought occurred to me, “what if I had invested that ยฃ300 in shares in Apple instead of buying that iPod?” The result2 is this tool:

apple
2004
2026
What if I bought Apple stock instead?

What if instead of buying that Apple product in 2004 you had bought stock in the company instead? Enter the price you paid in 2004 for the product you bought to see how much money the stock would be worth in 2026:

$
$

How is this calculated? Using approximate data from historical stock prices sources such as Yahoo Finance and Digrin.

  • In October 2004 the cost of 1x Apple share was approximately $60
  • As of April 2026 the cost of 1x Apple share is approximately $259
  • The cost of the product entered is divided by the 2004 amount to give us a number of shares, this is rounded down to get a whole number of shares for simplicity
  • The stock split three times between 2004 and 2026, 2:1 in 2005, 7:1 in 2014 and 4:1 in 2020, so the amount of stocks is adjusted based on these splits to get the total amount for today.

  1. This converts to approximately $540USD at the exchange rate of that time, the cost of the 40GB iPod was about $400USD (+ taxes) at that time. โ†ฉ๏ธŽ
  2. The result is this slightly depressing thought exercise! ๐Ÿคฆ๐Ÿปโ€โ™‚๏ธ I’ve used USD at it was easier to get historical share prices in USD, but you get the idea. โ†ฉ๏ธŽ

AI Bots: Disallow

I wrote a post recently “Should WordPress block AI bots by default?” with some thoughts about whether WordPress should be blocking AI bots via the robots.txt file by default.

Since writing that I decided that rather than just talking about it I should go ahead and submit some updated code to the WordPress project that does exactly that. I’ve done WordPress development for 14+ years, whilst I’ve created my own plugins and added them to the WordPress plugin repository I’ve never submitted anything to the core codebase before, so it was an interesting process to go through to get a bit of experience of that.

I’m not going through the various steps in detail to do this, but basically it involves forking the WordPress codebase on Github, making the changes in a local development environment, pushing some code to Github and making a Pull Request for those changes.

Whilst the code change is pushed to Github you also need to make a ticket in WordPress Trac ticketing system that is used to track code issues like bugs, updates and feature requests. I created a new Trac ticket for the PR but as it turns out a similar idea had been previously suggested in this Trac ticket so mine has been marked as duplicate to this original one.

This original ticket has some good ideas in it, although no code has been written so I’m glad to have submitted a PR along with it. I do also think my argument for this are a bit more forceful in my ticket compared to the original, I really do think this should be added. However, I am approaching this from the perspective of trying to create some discussion around this, so I don’t at all expect that the code in my PR is exactly the way this feature should work. In the original Trac ticket the suggestion is to have another checkbox in the “Reading” options in WordPress, “Discourage Al services from indexing this site” which I think makes perfect sense.

I did wonder whether there should be any specific way to manage the list of AI Bots though, whilst the “discourage search engines…” option is similar there is a difference. In the ‘robots.txt’ file it only takes a couple of lines to block all search engine user agents:

User-agent: *
Disallow: /

So if you wanted to block all search engines and AI bots you could use just those couple of lines, but presuming you still want search engines to index your site1 you need to specifically list all of the AI bot user agents to be blocked, something like this should block most known AI bots (at the time of writing in October 2024 anyway):

User-agent: AI2Bot
User-agent: Ai2Bot-Dolma
User-agent: Amazonbot
User-agent: anthropic-ai
User-agent: AlphaAI
User-agent: Applebot
User-agent: Applebot-Extended
User-agent: Bytespider
User-agent: CCBot
User-agent: ChatGPT-User
User-agent: Claude-Web
User-agent: ClaudeBot
User-agent: cohere-ai
User-agent: Diffbot
User-agent: FacebookBot
User-agent: facebookexternalhit
User-agent: FriendlyCrawler
User-agent: GPTBot
User-agent: Google-Extended
User-agent: GoogleOther
User-agent: GoogleOther-Image
User-agent: GoogleOther-Video
User-agent: iaskspider/2.0
User-agent: ICC-Crawler
User-agent: ISSCyberRiskCrawler
User-agent: ImagesiftBot
User-agent: img2dataset
User-agent: Kangaroo Bot
User-agent: Meta-ExternalAgent
User-agent: Meta-ExternalFetcher
User-agent: OAI-SearchBot
User-agent: omgili
User-agent: omgilibot
User-agent: PerplexityBot
User-agent: PetalBot
User-agent: Scrapy
User-agent: Sidetrade indexer bot
User-agent: Timpibot
User-agent: VelenPublicWebCrawler
User-agent: Webzio-Extended
User-agent: YouBot
Disallow: /
2

It’s possible users might want to allow certain ones, and disallow others so the original Trac ticket also suggests that this list could be filterable so that plugins etc could modify this list.

I don’t think adding any kind of UI beyond the checkbox to core would be desirable as it’s exactly the kind of extension of functionality that plugins are intended for. The basic feature of blocking AI bots will work and if users need more they can find a plugin or write their own code to do what they need. One consideration is whether this list of default AI bots should get updated outwith the regular core WordPress development cycle, but the amount of new AI bots appearing probably(?) isn’t that frequent and there are fairly common interim point updates in the WordPress development cycle that would allow this block list to be updated.

If you’re reading this and think it’s an enhancement worth supporting then please do leave a comment on the original Trac ticket if you can, or reshare this post anywhere you think might help draw attention to it.


  1. I acknowledge there is a lot of discussion about whether blocking AI bots will one day have the same impact that blocking search engines from your site does now in that you basically won’t show in any search engine results. The intention of blocking AI bots by default is so that users can make an informed choice about how their content is used. โ†ฉ๏ธŽ
  2. These are the droids we are looking for? โ†ฉ๏ธŽ

Dookie Demastered

I’m not particularly into Green Day but this is pretty great, “Dookie Demastered” is their response to the usual “remastering” and re-release of albums when they reach certain age milestones, in this case it’s 30 years since their album “Dookie” was released:

https://www.dookiedemastered.com

Basically the album was “re-exploded onto 15 obscure, obsolete, and otherwise inconvenient formats“, from a wax cylinder to game boy cartridge, floppy disk and an electric toothbrush.

I love the Handheld heroes-esque nature of this, including the great line drawing near the bottom of the site which shows all of the formats.