Iopsys EG400 - possible to run up to date OpenWrt?

@ZorgX As Jeff already mentioned:
Please use "Preformatted text </>" for logs, scripts, configs and general console output.
grafik

I did this now for you. In the future, please take the time for this formatting.

sure, no problem :slight_smile: i have two and i can accsess the recoverymenu even after bad flash :slight_smile:

Hey, i try to make one with the builder from iopsys, and i make a image with LEDE reboot

BusyBox v1.27.2 () built-in shell (ash)

   ________  ___  ______  ______
  /  _/ __ \/ _ \/ __/\ \/ / __/
 _/ // /_/ / ___/\ \   \  /\ \  
/___/\____/_/  /___/   /_/___/  

IOP Version: EG400-X-INT-4.2.0BETA1-181210_1329
LEDE Base: Reboot (SNAPSHOT, r6281+1-afa4d51deb)

Is it hard to update this to the last openwrt ?

root@Inteno:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 10000000 00020000 "brcmnand.0"
mtd1: 004e0000 00020000 "kernel_0"
mtd2: 004e0000 00020000 "kernel_1"
mtd3: 00060000 00020000 "nvram2"
mtd4: 00020000 00020000 "nvram"
mtd5: 0f480000 00020000 "ubi"
mtd6: 00040000 00020000 "cfe_extend"
mtd7: 073c4000 0001f000 "rootfs_0"
mtd8: 073e3000 0001f000 "rootfs_1"

I was also able to install Luci at "parallell" with juci but the loginscreen didnt work for some rison .. maybe just me that need to aktivate more stuff in the builder hehe

Is it posible to make a build file with this builder and run it with a openwrt builder so i can get all the latest updates and i can use the drivers and stuff from Iopsys ?

How feeds work

The OpenWRT build system contains several core packages but can be
extended and modified by using feeds. Feeds are repositories that
contain package Makefiles, i.e. descriptions on where to find the
source code for a package and how to build an OpenWRT package from
it. Feeds are defined in feeds.conf file in TOPDIR. The layout for
the dectmngr package is shown below. That is the feeds.conf contains a
reference to a feeds git repo and a commit, then in that feed the
dectmngr git repo and commit id is specified.

feeds.conf #commit -> feeds/intenopackages/dectmngr/Makefile #commit -> dectmngr.git

feeds.conf:
src-git-full intenopackages git@iopsys.inteno.se:inteno-packages.git^e0bb62451d8b2030d84191732b42a0d3064b1c5f

feeds/intenopackages/dectmngr/Makefile:
PKG_SOURCE_URL:=http://ihgsp.inteno.se/git/dectmngr.git
PKG_SOURCE_VERSION:=6ba403663bc9cfdb8f89fb34de367f0796d68552

While the OpenWRT build system supports branch names in feeds.conf, in
Iopsys we only use commit id:s. This ensures that we can always
recreate a build at a later date by checking out a specific commit in
the top level repository.


Iopsys initialization

After cloning the repository the iop command needs to be initialized
to install the commands for this version of iopsys.

Running iop without arguments gives the following output:

./iop
Usage: iop []

Avaliable commands:
bootstrap Initial command to run to install other commands
setup_host Install needed packets to host machine

As can be seen, there is only two command avaliable. First you need to
install everything needed to your host with.

./iop setup_host

This will only work on debian based distroes. ex ubuntu. not on
fedora.

After the host is setup openwrt build needs to be populated with
packages to build. Run this to install more commands from feeds:

./iop bootstrap

When bootstrap completes you should have more commands avaliable (some
commands can differ for your version):

./iop
Usage: iop []

Avaliable commands:
bootstrap Initial command to run to install other commands
feeds_update Update feeds to point to commit hashes from feeds.conf
genconfig Genereate configuration for board and customer
generate_tarballs Generate tarballs for openstk
setup_host Install needed packages to host machine
status Display the state of your working tree
update_package Publish changes to packages and feeds

Next, all feed repositories need to be cloned and packages
installed. This is handled by running:

iop feeds_update

This clones all feed repositories into feeds/ and installs the
packages from those repositories into the build system by creating
symlinks in packages/feeds/.

NOTE. iop bootstrap only needs to be run once to install the commands
above. After you have installed feeds_update, running that command
will update iop commands along with all other packages.

Now, generate a .config file for the board and customer you're
building for with

iop genconfig

To summarize, to intialize the repository, run:

git clone
iop bootstrap
iop feeds_update
iop genconfig

If it's the first time you're building an image on your host, you
should run:

iop setup_host

to install the required packages on your
host machine. After that run:

make

alt: for parallel build.
make download
make -j8

Updating the repository

If you run git pull in the toplevel repository you will most probably
get changes that modify feeds.conf. Now your feeds.conf points to
newer commits then what is checked out in the feed repositories and
you need to update your feeds. Do this by running:

iop feeds_update

This will pull in the latest changes in the modified feed for you. To
summarize, to update your repository, run:

git pull
iop feeds_update
make


Working with feeds

The build system will clone and checkout the packages in build_dir in
detached head state so before you can commit you need to checkout a
branch to work on. To prevent an invalid state where you update
feeds.conf with commits that are not pushed to the remote repository,
the script pushes the new commits to the remote repos. For this to
work the script needs to know what remote branches to push to. For
that reason, always make sure to check out remote tracking branches,
for example with git checkout -t origin/mybranch.

When you have created a new commit in the package repo in the build
directory this commit needs to be pushed to two places. First the
package makefile in the feed needs to be repointed to the new
commit. This in turn creates a new commit in the feed and feeds.conf
needs to be repointed to that commit.

First you need to set the EDITOR environmental variable to your
favorite editor. Ex:

export EDITOR=/usr/bin/emacs

You probably want to add this line to your .bashrc.

iop update_package

First, it will update the toplevel remote repository and abort if it
finds that you are not on the last commit on the branch you're working
on. If you get this complaint, just merge the remote branch into your
local branch. This step is kept manual to ensure that you know that
your repository changes.

If you are on the end of your branch the script continues and checks
if any git repo in the build differs from the commit in the package
makefile. If it finds a diff it first asks you what branch to make the
new commit on since you are in detached head state in the feed
repository. You probably want to select devel here. Once you have
selected a branch to update the script autogenerates a commit message
from the commits between the old and the new commit point of the
package. The same then happens for the commit on feeds.conf

Source: https://github.com/unofficial-inteno-public-mirror/iopsys-barrier-breaker

The builders looks kind of the same like bast on the same stuff .. so.. any good ides on how i can build a image with two bilders ? is it easyes to just build with bouth and edit the folders inside of the builder or is it best to edit the bilder it self ? is it any "autoapps for this ?"

Or is it better to make a "wanilla" image in the iopsys builder and after that install all the package i want ant use opkg-upgrade for autoupdating all ?

Not sure if there’s still any real interest for this device.

Poking around, it’s actually pretty good hardware and it can easily route at 1gbps speeds. Only thing holding it down is IMO the locked down carrier firmware.

I’ve dismantled and researched this device and I’ve made quite some progress.

Main findings/results so far:

  • serial pinout
  • original firmware-image binary dump (via serial and cfedump util)
  • fully extracted filesystem from firmware-image, including /etc
  • isp and vendor specific URLs for updates/unlocked firmware

I’m working on breaking the default passwords so that it can be fully accessed without needing a root exploit or serial.

The most important results so far can be found in this wiki page I’ve started:

If anyone else is interested in working with the device, so let me know!

2 Likes

As a status update, I entered the debricking/firmware-recovery mode (as outlined in the wiki-link above), and tried installing the latest, unlocked factory firmware for this device (as obtained through the "secret" links contained in the extracted ISP-firmware).

My idea was that I could flash this to one bank with a known admin-login, and use that to extract more details from the other firmware bank.

Observing the console log though, after successful first boot, the next thing it did was overwrite the other bank too :grinning_face_with_smiling_eyes:

That means flashing latest unlocked default image to one bank, also deletes whatever carrier-specific settings you have on the other bank!

For those who think that still sounds interesting... I now have a completely blank device with default credentials and a more recent IOPSys version:

System Status

Hostname: iopsys
Model: EG400
Serial No: EG4024Hxxxxxxxxx
MAC Address: 44:D4:37:44:xx:xx
Filesystem: UBIFS
Firmware Version: EG400-X-IOPSYS-4.3.5-201023_1113
Other Bank: EG400-X-IOPSYS-4.3.5-201023_1113
Kernel Version: 4.1.38
BSP Version: consumer
CFE Version: 1.0.38-161.189-IOP1.5

So Iopsys is bumped from 3.1 to 4.3 and kernel from 3.4 to 4.1. That's a fairly good upgrade at very low risk IMO!

Login in at the webinterface (http://192.168.1.1) with admin/admin, I can also add an ssh-key for root access, and have full access to the device via SSH.

$ ssh root@192.168.1.1


BusyBox v1.27.2 () built-in shell (ash)

   ________  ___  ______  ______
  /  _/ __ \/ _ \/ __/\ \/ / __/
 _/ // /_/ / ___/\ \   \  /\ \  
/___/\____/_/  /___/   /_/___/  

IOP Version: EG400-X-IOPSYS-4.3.5-201023_1113
LEDE Base: Reboot (SNAPSHOT, r0+7677-22c4faa7fa)
------------------------------------
root@iopsys:~# 

Opkg still refers to LEDE snapshots and doesn't work OOB though:

root@iopsys:~# opkg update
Downloading http://downloads.lede-project.org/snapshots/targets/iopsys-brcm63xx-arm/generic/packages/Packages.gz

It's not OpenWRT, but it's much better than the ISP-locked down unit it used to be. Mission accomplished?

For those interested in doing the same thing to their EG400, I've uploaded a copy of the unlocked firmware I used here:

MD5 checksum: 22d7894c9378985f9494c0c4556375a6

2 Likes

I have a ISP supplied unused EG400 which I had no use for due to it's limitations. Before updating I'm curious as to what I could expect as I have no prior knowledge of iopsys.

I would like to use the EG400 as an AP with a trunk port and 5 different SSID on different VLANs. If it might be possible I'll go ahead and update. If you already know that such advanced features won't be possible on iopsys I would apprecate a warning so I don't kill it's value for no reason.

Nice work btw.

Iopsys is sort of like OpenWRT (a fork), but designed to be operated/operatable remotely by service-providers.

This is done via protocols and services which can be disabled with admin-access.

Once those are off, Iopsys is pretty much like an inferior OpenWRT with a different JS-powered GUI (Juci).

Notable differences (for this device at least):

  • much more sophisticated WiFi settings than OOB OpenWRT
  • built on a older OpenWRT base.
  • don’t expect to get Opkg in a usable state. You have what you have. Deal :slight_smile:

That said. You’ll find most of the things where you expect them to. Either in the GUI or in /etc/config.

The network management in general is clearly VLAN-capable (my isp used 4 in its default config), but I haven’t tried applying this to WiFi. Worst case scenario, try ifname.vlanid notation?

That said i haven’t tried a setup like yours.

Give it a shot and see if it works?

Because I’m a stubborn idiot, I went looking at the Iopsyswrt source to see if there’s more to be had here.

Findings:

  • latest iopsyswrt is v6.4
  • there’s a branch where iopsys is rebased on OpenWRT 21.02.1

My hope was that I could build that for the EG400 and pioint opkg to the 21.02 package repo to extend the usefulness of the device (with obvious disclaimers about packages requiring kernel-modules).

Unfortunately I found support for the EG400 is discontinued at this point.

Going back in time I found the commit where EG400 support was removed, and checked out the revision before that (commit e60775621aad71f7f32d5878d561a80c9fac211c,
Author: Jani Juvan jani.juvan@iopsys.eu,
Date: Fri Nov 20 13:35:25 2020 +0100), hoping that would be more recent and still build.

Even after quite a bit of muscling with the build-system, something still failed the build and I gave up.

But at this point it was trying to build a 4.1 kernel which seems somewhat close to the image we already have.

So I checked the package sources for Iopsyswrt at this point in time, and they seem based on OpenWRT 19.06!

Maybe tweaking opkg to the right 19.06 repo might work for this build too? :slight_smile:

If nobody else beats me to it, I will give it a try myself one of the upcoming days!

Exciting stuff!

Hi @josteink,

Great work! I successfully flashed my EG400 with the image you provided. I was hoping for the possibility to set up a guest WiFi with it (disabled in the ISP's version). Unfortunately, the fiber internet/WAN stopped working. On the original ISP version, all relevant settings were hidden so there was nothing to sneak into for the WAN/SFP settings. No user/password or settings provided by the provider, so I'm a bit lost.

Any idea for typical settings to try? Thx a lot!

For my ISP all I had to do was request DHCP on a specific VLAN on the wan-interface (VLAN 10 for Get/Telia)

This was actually visible in the old interface, I just didn’t notice until afterwards :sweat_smile:

Thanks a lot! Indeed, configuring the ethwan VLAN to (ID from Provider)

VLAN Type:  802.1Q
Base Device:    WLAN (eth0)
VLAN ID:    92
Priority:   0

brought the connection back!

1 Like

Nice! If you share what ISP and subscription you have, it may help others in your situation too :slightly_smiling_face:

Great to see this thread recover :slight_smile:
I have also an EG400 and wanted to use it as an advanced AP, flashed 4.2 beta something on it (I unlocked it from my ISP as they did not patch, so I was able to use this), but it was not working properly. Ever since I tried to build newer versions several times, but I was never able to get it working.

But tell me one thing: My understanding was, that quite a few devices should be compatible with each others build. That's why I tried to build 6.4 just today with the config for the DG400prime device.
But still no luck with that.

I am also slowly giving up on this...

Using the 4.3 formware uploaded above for now, just to see how it behaves. Thanks for that one! :slight_smile:

I’ve contacted Iopsys support. They say 4.3 is the absolutely last version to support the EG400.

I don’t have any good deep insight into Inteno routers, but I wouldn’t by default assume any two router-firmwares are cross-device compatible unless given clear assurances about that.

Successfully flashed the latest firmware, thanks! How do I get root access for this? I need to put in vlan 10 for Telia to get internet access.

See above. You just add your ssh-keys in the management UI, and then you can SSH in as root.

Default login for the web-interface should be admin/admin. You may also be able to set VLANs there without fiddling with SSH.

I did not get SSH to work, but finally found it in the GUI. Works now. Thanks guys!

.. i found the way to flash.. and i posted it in this thread .. Iopsys EG400 - possible to run up to date OpenWrt? - #7 by ZorgX (and befor that https://foorum.hinnavaatlus.ee/viewtopic.php?p=9917608#9917608 ) .. but i guess you did make a wiki out of the info i found .. anyway.. its not inposible to take the drivers from the iopsys and get it working with openwrt.. you just need the drivers .. and the kernal stuff is in a blub from iopsys.. and maybe we need some of that to .. some of the drivers for the router that is not in the blob (think its this : feed_inteno_broadcom ) is stuff like the light settings.. you can also get luci to run.. just install the packs and it runs fine.. its even settings for it in the iopsys settings to run both luci and juci (iopsys dashboard)

and the ram\nand size in the wiki is wrong..
And you have wrong target if you want to use opkg.. you have iopsys-brcm63xx-arm thats wrong.

And you cant just log in if you have the password to admin\get etc .. you need to edit the file over that user can use juci like this :

To get user accsess controll type vi /etc/config/owsd ( my support user is name get becuse my ruoter is from get, to find your support user just type cat /etc/passwd

config owsd 'global'
option sock '/var/run/ubus.sock'
option www '/www'
option redirect '/cgi-bin/luci:/cacheflush.html'

config owsd-listen 'loopback'
option port '80'
option interface 'loopback'
option ipv6 'on'
list origin '*'

config owsd-listen 'lan'
option port '80'
option interface 'lan'
option ipv6 'on'
option whitelist_interface_as_origin '1'
option whitelist_dhcp_domains '1'
list origin '*' <----- add
list user 'admin' <---- add
list user 'get' <----- and this one
list user 'user'


config owsd-listen 'lan_8080'
option port '8080'
option interface 'lan'
option ipv6 'on'
option whitelist_interface_as_origin '1'
option whitelist_dhcp_domains '1'
list origin '*' <---- Add
list user 'admin' <---- Add
list user 'get' <----- And this one
list user 'user'

config owsd-listen 'wan'
option port '80'
option interface 'wan'
option ipv6 'on'
option whitelist_interface_as_origin '1'
list origin '*'
list user 'admin' <---- if you dont like your isp remove this
list user 'get' <----- and rename get to 'nobodyEver'

config owsd-listen 'wan_8080'
option port '8080'
option interface 'wan'
option ipv6 'on'
option whitelist_interface_as_origin '1'
list origin '*'
list user 'admin' <-----if you dont like your isp remove this
list user 'get' <---- and rename get to 'nobodyEver'

config owsd-listen 'MGMT'
option port '80'
option interface 'MGMT'
option ipv6 'on'
option whitelist_interface_as_origin '1'
list origin '*'
list user 'admin' <-----if you dont like your isp remove this
list user 'get' <-----and rename get to 'nobodyEver'

config owsd-listen 'MGMT_8080'
option port '8080'
option interface 'MGMT'
option ipv6 'on'
option whitelist_interface_as_origin '1'
list origin '*'
list user 'admin' <-----if you dont like your isp remove this
list user 'get' <-----and rename get to 'nobodyEver'

config owsd-listen 'wan6'
option port '80'
option interface 'wan6'
option ipv6 'on'
option ipv6only 'on'
option whitelist_interface_as_origin '1'
list origin '*'
list user 'admin' <-----if you dont like your isp remove this
list user 'get' <-----and rename get to 'nobodyEver'

config owsd-listen 'Internet'
list user 'nobodyEver'

config owsd-listen 'HSD'
list user 'nobodyEver'

config owsd-listen 'SIP'
list user 'nobodyEver'

- owsd 84/84 100%

And yea you need passwords icon_smile.gif type passwd admin and make the new password after that passwd get ( or your support profile)

After this you can edit most of the usersettings from admin profile System --> Menu Accsess
1 Like

You can also use UART without open the router:

1 Like