One of the issues I face on a semi-regular basis with OpenWrt devices is the need for manual reconfiguration in case of a factory reset.
OpenWrt by default ships a "network gateway" profile that assigns the appropriate ports to wan
and lan
configurations, sets up firewall rules and routing inbetween, disabled WiFi, etc., for security purposes. This is fine for a fire and forget type of setup, where you set up the device once and it works wonderfully.
But, I believe many of us have multiple OpenWrt devices at home in various roles, where losing the configuration due to a factory reset means tiresome manual setup again. For example, I have 3x Belkin RT3200's which sometime go bonkers and need a reset. These three units are set up as a dumb wireless APs with bridged interfaces (no relayd), and a factory reset renders me unable to re-do the setup without physically accessing the device (uplink to main network is through WAN port for ease of use, after reset, SSH and web interface access is restricted).
Today, we have pretty awesome solutions for customised firmware builds - both the OpenWrt Image Builder, and aparcar's much-appreciated work on attendedsysupgrade
and its backing service. This makes it incredibly easy to generate role-specific builds, including/excluding packages as one sees fit.
Running the image builder locally, however, can be a daunting task for a beginner, and most people opt for attendedsysupgrade
, which has one major drawback: no custom files/packages can be included, only things from the official ImageBuilder. This means that ASU cannot create actual role-specific builds that can auto-configure themselves to the intended role/profile upon reset.
To solve this, and to make OpenWrt a bit more flexible, I would like to propose the separation of the default network configuration/profile into separate packages. The default build then could include the default profile ("network gateway"), and via ImageBuilder/ASU, the user could replace that package with a more fitting version for their purpose (e.g. a network gateway with WiFi enabled by default, or a wireless AP/switch profile like mine above), while still allowing the user to manually configure final details.
I want to emphasize that this would have very little effect on the official builds - at the end user, nothing would really change on a pure install, but for those who customise their setups, this would be a godsend in case of necessary repairs/reconfiguration.
This solution would also allow users to easily re-configure their network by installing a single meta-package. I remember, as a beginner with OpenWrt, coming from more user-friendly options like Padavan or AsusWrt, I often struggled to achieve specific network configurations that are usually a single button selection on said firmwares. The amount of control, combined with the often out-of-date wiki (not trying to complain here, in fact I appreciate those amazing people who sacrifice their free time to keep it up to date!), and the somewhat steep learning curve can be quite a deterrent for a lot of people from actually using pure OpenWrt (on another note, it would be great if there was an open source project, similar to what GL.inet has done, to provide a simplified, more user-friendly interface that hides away all the pesky low level configuration bits). If there was a list of officially supported/provided profiles/roles, even in a limited manner (I doubt there would be need for more than 3-4 different roles), I think a lot more users would choose OpenWrt over other hacky projects that lack transparency.
I understand that for OpenWrt, ease of use is not a primary goal, however I believe this change would be superficial enough to require very little work on top of what already exists, while providing a significant amount of usability upgrade.