<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sudheera Chandrajith]]></title><description><![CDATA[Things I build, break and figure out along the way. Code, hardware, networking and whatever I get curious next.]]></description><link>https://sudheera.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ac729529879634d0f96c76e/103cf055-0a17-4ce0-aefe-a1ba1eabd6ab.jpg</url><title>Sudheera Chandrajith</title><link>https://sudheera.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 09:00:36 GMT</lastBuildDate><atom:link href="https://sudheera.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Getting the Arcadyan AW1000 Voice port working on OpenWrt]]></title><description><![CDATA[I got the Arcadyan AW1000 RJ11 phone port working on OpenWrt with VoLTE calls, caller ID, SIP and a LuCI app. Source on GitHub.]]></description><link>https://sudheera.hashnode.dev/getting-the-arcadyan-aw1000-voice-port-working-on-openwrt</link><guid isPermaLink="true">https://sudheera.hashnode.dev/getting-the-arcadyan-aw1000-voice-port-working-on-openwrt</guid><category><![CDATA[OpenWRT]]></category><category><![CDATA[noobwrt]]></category><category><![CDATA[aw1000]]></category><category><![CDATA[linux kernel]]></category><dc:creator><![CDATA[Sudheera Chandrajith]]></dc:creator><pubDate>Mon, 09 Nov 2026 21:47:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ac729529879634d0f96c76e/656a8963-cedc-403f-b9a4-608f3f08c826.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've had an Arcadyan AW1000 router for a while now and I've tried several different firmwares, but they all have one common issue: even though the router has an RJ11 phone port, in those firmwares that port didn't work. So I checked, and on the stock Telstra firmware it worked, and you can make and receive calls using the SIM inside the router. So I thought, can't I make this work? I searched around to see if anyone had got it working on OpenWrt. I found an article on a forum and one Facebook post about it, so I started researching it myself.</p>
<p>After researching for a while, I found there are three parts involved. A Skyworks Si32261 SLIC chip, which works as the phone exchange. It's the one that makes the ring voltage and notices when someone picks up the handset. Then the Quectel 5G modem, which makes the call over VoLTE. And the Qualcomm IPQ8074 chip in the middle, which has a PCM audio block and connects those two together.</p>
<p>I didn't find any documents about them. Most of the early work was reverse engineering the stock firmware, reading it and testing on the router with a UART. I also found that if you try to write to some registers on the IPQ8074 chip, it resets the router. It happened to me when I tried to modify them, the router restarted itself, and after that I kept that address list as a note.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac729529879634d0f96c76e/7244dc79-7c77-430a-a77c-99ab4c4b31ba.jpg" alt="" style="display:block;margin:0 auto" />

<p>I managed to ring the phone easily, but getting audio through took a lot longer. Even though the modem and the SLIC are on the same PCM bus, they didn't communicate with each other directly. It worked after I switched the modem's audio to slave mode, made the IPQ8074 the master, and had the kernel driver copy samples between them while a call is up. The SLIC also needs a DSP patch from Skyworks every time it starts.</p>
<p>After calls were working, I added more features to it, because why not. Some features are Caller ID, Call hold, Call history, Phone book, Alarm calls, Speed dial, Block numbers, MQTT, Do not disturb, SIP (I added this feature to the existing QModem package, but also have an adapter so I can add other SIP services later if users ask for them) and call recording. Also, the phone LED on the router is now on when the phone is enabled, off when it's turned off, and blinks when there is an incoming call.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac729529879634d0f96c76e/c332bcda-6dee-4dd9-8607-a68c535c3a89.png" alt="" style="display:block;margin:0 auto" />

<p>I built this as three packages: the kernel module, a small daemon that runs the line and talks to the modem with AT commands, and a LuCI app. Anyone who wants to try it just needs to copy them to the router, install them and plug in a phone. I use NoobWRT firmware, developed and maintained by <a href="https://www.linkedin.com/in/lahiru-sandaruwan-liyanage/">Lahiru Sandaruwan Liyanage</a>.</p>
<p>Source code (GPL-2.0): <a href="https://github.com/Perz3us/openwrt-aw1000-phone">openwrt-aw1000-phone</a></p>
<p>If you've got an AW1000 and try it, let me know how it goes. PRs welcome.</p>
]]></content:encoded></item></channel></rss>