Yesterday, while browsing around in a thrift shop, I came across one of those generic WiFi repeaters with no branding on it. Since it was so cheap, I decided to take a chance on it and bought it since I've been wanting to get an extender anyway.
Out of the box, the repeater's functionality is very limited. Although it certainly works as a repeater, you have pretty much no control over it. The repeater works by setting up its own subnet for all of the devices that are connected to it. I did not like that, so I did some exploring, and to make a long story short, I managed to hack my way into it only to find that it runs a fork of OpenWRT. After reconfiguring the NGINX server for the OEM's basic UI to run on a different port, I used opkg to install LuCI and reconfigured the repeater to use relayd.
Although this setup works (aside from the fact that I cannot figure out how to get devices connected through the repeater to be able to access LuCI), there are various functions of OpenWRT that are broken due to the changes that were made to it by the OEM. For example, the LED configuration options appear to just not do anything at all and trying to access the Network > IP Security tab also fails with this error:
/usr/lib/lua/luci/dispatcher.lua:1347: module 'luci.cbi' not found:
no field package.preload['luci.cbi']
no file './luci/cbi.lua'
no file '/usr/share/lua/luci/cbi.lua'
no file '/usr/share/lua/luci/cbi/init.lua'
no file '/usr/lib/lua/luci/cbi.lua'
no file '/usr/lib/lua/luci/cbi/init.lua'
no file './luci/cbi.so'
no file '/usr/lib/lua/luci/cbi.so'
no file '/usr/lib/lua/loadall.so'
no file './luci.so'
no file '/usr/lib/lua/luci.so'
no file '/usr/lib/lua/loadall.so'
stack traceback:
[C]: in function 'require'
/usr/lib/lua/luci/dispatcher.lua:1347: in function '_cbi'
/usr/lib/lua/luci/dispatcher.lua:1024: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:479: in function </usr/lib/lua/luci/dispatcher.lua:478>
This got me wondering if it would be possible to update the repeater to use an official OpenWRT instance instead of the OEM's fork. Although the repeater is not listed as having official support for OpenWRT, the LuCI status page showed that the target platform for the repeater is a mediatek/mt7981
, so I attempted to use the sysupgrade image from here to upgrade. Perhaps unsurprisingly, this bricked the repeater. After some frantic searching, I figured out how to get the repeater into recovery mode and re-flashed it with a firmware image from the manufacturer.
This brings me to my question. Given that this device is already running an unofficial OpenWRT fork and OpenWRT does not officially support this specific device but does support its chipset, is there anything I can do to upgrade to a newer version of OpenWRT, and ideally, completely eliminate all of the OEM-specific tweaks that were made to the version that I am currently running?
The LuCI status page lists the OpenWRT firmware version as: OpenWrt 21.02-SNAPSHOT r0-10d74dc / LuCI openwrt-21.02 branch git-23.093.57360-e98243e