Support for Easybox 904 LTE

@slh: Thanks, I also put on my old EasyBox 802 with LEDE 17.04 build and analysed that the Ralink 2870 chipset there is also still fragile. You can use the chipset already as a WWAN and AP at the same time, but usually then the wifi breaks with heavy load completly and takes a minute to come up again.

The driver says it should be possible to use it in mesh-networks, but unfortunately a test with an WR801v2 with working mesh-options don't work proper with this Ralink (shit) devices....

Is there any idea if also NF offloading will be enabled in the near future for Ralink-chipsets? As I understand other discussions there is usually only Atheros chipset support... unfortunately.

So still continueing to find a good working device...

It's so annyoing with the Easyboxes. They all have a descent hardware (RAM, Flash, CPU), but always lacks of driver support. - Especially the Easybox 904 with a price < 10€ a lot of RAM and Flash, fast CPU should be a perfect development plattform for openwrt and should get supported offically!

Do not compare rt2800pci with RaLink rt3883 iNIC.

LCD does not work on my build
@takimata why did you think that fb-tft includes ILI9341 ?
I see no message in dmesg and no /dev/fb device exist.
I can not see any ILI9341-kmod.
A kmod-fb-tft-ili9486 exist but it is an other device.

An other thing are:
When enablening FB-devices the following lines are missed in kernelconfig and it is not possible to make an build without stopping, or adding this lines:

cat << EOF >> ./target/linux/lantiq/xrx200/config-4.14
CONFIG_VGA_CONSOLE=y 
CONFIG_VGACON_SOFT_SCROLLBACK=n 
CONFIG_DUMMY_CONSOLE_COLUMNS=80
CONFIG_DUMMY_CONSOLE_ROWS=25
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
EOF

In past i use this quick and dirty makefile for build with the ILI9341 with SDK:


And i missed some more modules as exist now. (if do a look inside the makefile)

of course you can use the kernel packages that are include the my archiv-file in path packages only.
(the kernel can use only modules that where built with them (I have no idea why is it, but the answer where much interessting for me))
You have to install from hand: scp first then opkg install full-path-file-name
Or theoreticly modifi the /etc/opkg/customfeeds.conf add

src/gz any_name	file://usb-path/to-packages"

And copy the files to the place where should be (it does make only sense on USB)

1 Like

I've edited /etc/opkg/customfeeds.conf and opkg / distfeeds.conf. I used an Apache server.
Install luci, nut-server and nut-mon, nut-web-cgi, usbutils, uhttp working now. Wifi working 5GHz and 2.4GHz, WAN port eth0.2 DHCP, Snapshot is stable.
Otherwise, a new kernel was released today.
http://downloads.openwrt.org/snapshots/targets/lantiq/xrx200/kmods/4.14.103-1-71c08020f8cd26e89ed7454da32dce5e/

:smile: Thank you

I have the scripts where i have created the patch and builds here: https://github.com/Plonkbong/create-openwrt-easybox904x-patches
And i add the resulting patch to my fork of openwrt: https://github.com/Plonkbong/openwrt
@QAuge should i do a pull request ?

1 Like

Hi Plonk34!

First, thanks for your effort =)
Regarding a PR: IMO why not using the several commits for the PR? I always push them at the top of my trees. This will preserve authorship and history. Your detailed description (which I like) can be the description of the PR itself. Otherwise I think there will be questions why things are done in this way (e.g. package/network/config/ltq-vdsl-app/files/dsl_control)
Also I see "Signed-off-by: Your Name <you@example.com>" at the end of the commit message - which isn't completed yet - right?
When I look at the patch, I see that some other things are changed as well, which has nothing related to the EasyBox904xdsl:
e.g.

-tplink,vr200 tplink,vr200v)
+tplink,vr200v)

...and others.

@takimata: Regarding the LCD driver. Although the upstream ILI9341 driver. I think I wrote it before, but the display isn't connected to a SPI interface but to an EBU interface which is working a little bit different. So we can't use the upstream driver (sadly).

Random: The random device reboots are really annoying. And I haven't found something what can caused this. Any ideas or conrete commands how to test this (except writing tests on the NAND please :slight_smile: - I setup an rootfs at the usb sdcard and experience these reboots also)?

Oh, right, I remember now. That's a real bummer, yes.

Not only annoying, unfortunately. In my tests not only did it reboot randomly, it broke the box requiring a reflash. That renders the thing effectively unusuable for anything beyond experiments. :frowning:

Which is really interesting. This way the box has restarted before the "reset" functionality kicks in. And this is really early - it should also work in recovery.

Sometimes I saw that the fw_config (which holds information about the uboot configuration location) wasn't right. So I added a workaround for that.

echo "fw_config is generated now"
/bin/sh /etc/uci-defaults/30_uboot-envtools

When you restart your box, can you please perform a

root@LEDE:~# fw_printenv bootnum
bootnum=1

and verify if it behaves like on my site ?

thanks i have fixed.

The reason are: I am not an git expert and i want a split into 2 parts one for the basics and one for the uboot.
For me i like to have an simple patch where i can exact see the what is going on.
In past i try to find out the relevant commits, cherry-pick them merge to openwrt but it was to complex and do not really work.
So i agree with you but i can not do it.

1 Like

How to build image from this link https://github.com/Quallenauge/Easybox-904-XDSL?
I follow this Build Instructions:
git clone https://github.com/Quallenauge/Easybox-904-XDSL.git Easybox-904-XDSL cd Easybox-904-XDSL ./scripts/feeds update &amp;&amp; ./scripts/feeds install -a cp vr9_default.config .config make oldconfig make V=s

But I can't build image. I got error always:

make[2]: *** [package/feeds/packages/bash/compile] Error 2
make[2]: Leaving directory '/Openwrt/Easybox-904-XDSL-master-lede-plonk/Easybox-904-XDSL-master-lede'
package/Makefile:103: recipe for target '/Openwrt/Easybox-904-XDSL-master-lede-plonk/Easybox-904-XDSL-master-lede/staging_dir/target-mips_24kc_musl/stamp/.package_compile' failed
make[1]: *** [/Openwrt/Easybox-904-XDSL-master-lede-plonk/Easybox-904-XDSL-master-lede/staging_dir/target-mips_24kc_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/Openwrt/Easybox-904-XDSL-master-lede-plonk/Easybox-904-XDSL-master-lede'
/Openwrt/Easybox-904-XDSL-master-lede-plonk/Easybox-904-XDSL-master-lede/include/toplevel.mk:216: recipe for target 'world' failed
make: *** [world] Error 2

How to solve this error?

About: "reboots without console output"
Can i happen that the NAND-flash/UBI-FS do not correct work ?

I have month before strange errors like in some config files only dump characters, but on the tar.xz root they are intact, and other error messages that looks for reason NAND-flash.
Now i have build an "full working image" again and i get a bootloop Reason:
My /etc/init.d/asterisk make some chmod and chown commands.
I find out if i try to chmod a bigger file the Router hangs until the moment where the watchdog reboots.

A question are is this an generel kernel problem, but in combination with NAND UBI Lantiq f2fs USB-Storage.
Or is this a special Device problem (or a special problem only on my devide). And is this a different problem from the "reboots without any output" describe in post before

My next problem are strace make always an segment fault (It sucks so much)

Any suggestions how can i find out was going wrong ?

is there a connection beetween:

I do some tests and it looks that the router hangs every time when i try to change bigger files that exist from the beginnig, but only on Firmwares with Telefonsupport.
It shows no error logs and it hangs up to the time where the watchdog restart the router (i try 60s timeout too but it does not help).
I try it with and without my patch, i fear this problem exist since months.

It will be nice if somewhere can confirm it.
because it is possible only my Router or only this Model or all Lantiq router with NAND and Telephon support or whatever.
And i am not 100% shure if it sealable because i get confused easily when i have reinstall so much times.

Did somewhere know how can i enable the pr_debug(..) messages inside the kernelcode.
It stands here: https://www.kernel.org/doc/html/v4.11/admin-guide/dynamic-debug-howto.html
But i do not understand or better how does it concret works on openwrt ?

Here is the complete Image and reposatory:
But note the sysupgrade image brings the router to a bootloop, but with the extra kernel image is it possible to start rootfs from USB-stick.

Images:
eb904x-owrt-ss20190311-214704-img.tar.xz
Reposatory
repo_root-ss20190311-214704.tar.xz
put the following unpacked archives to ./repo_owrt/ss20190311-214704r0/packages/mips_24kc/*
base-ss20190311-214704.tar.xz
eb904-ss20190311-214704.tar.xz
eb904x-owrt-ss20190311-214704-img.tar.xz
fbtft_eb904-ss20190311-214704.tar.xz
luci-ss20190311-214704.tar.xz
packages-ss20190311-214704.tar.xz
raspberry-ss20190311-214704.tar.xz
routing-ss20190311-214704.tar.xz
telephony-ss20190311-214704.tar.xz
SHA 256 sums:
71705c616c523e97cf6d1b7abea465f9eb82a0f9b260f34e7260c83a4ba63c59 ./luci-ss20190311-214704.tar.xz
4a88c1cf55d7ed9d4b3c631787dfa0da46012d35d080d1bdf28ca272c48462fb ./repo_root-ss20190311-214704.tar.xz
8e06e4a7322b38a6f44cf96399101bba061b2761e88e3771d761a13754f59dea ./routing-ss20190311-214704.tar.xz
a0993b9214c3ce1643e6d718c52ca549f0a2e9815eb38d7c64c142d104134cac ./eb904-ss20190311-214704.tar.xz
0e23601229c28775c4834fc84af5ab7f7d6eaae3cb41c61dbdcec6bc558bc88c ./eb904_feedfix-ss20190311-214704.tar.xz
308d270e128048efb7a33d2582c530fa9348bcde207c63bca0c3a7afdf3071aa ./raspberry-ss20190311-214704.tar.xz
5dfd4f6cf8f0f7494090701a97f2e4365abb1cea5d55e702951f98ab39af4d09 ./packages-ss20190311-214704.tar.xz
f8061eff2c8b3e94e92aa919c7aa71f3e33775530cc7e90e70b19466d58c74c9 ./base-ss20190311-214704.tar.xz
523423771041239193db20892479237809d7ba28daa08e583234580e4f66422d ./telephony-ss20190311-214704.tar.xz
f7e3c66743254e3dc89dd54a1a4b0c22a35d1351fa93e5a4b05061e986f72553 ./fbtft_eb904-ss20190311-214704.tar.xz
487ed8f7b8207fb9cd454ecf7d50008f23f4968d3f7e6f48603e3b89c1ffbd6e ./eb904x-owrt-ss20190311-214704-img.tar.xz

1 Like

I can confirm that the NAND-flash does not correct works.

I use a Telefon support build with the addidional bootargs: mem=116M phym=128M vpe1_load_addr=0x87e00000 vpe1_mem=2M maxvpes=1 maxtcs=1 nosmp
The problem are:
If i want to change/modifie some bigger file that exist from beginning then the Router hangs without an end, but normaly the watchdog reboot the router after 30sek.
Examples:
chmod 0777 /lib/libc.so # 602000 KiB Router crashes
chmod 0777 /usr/sbin/pppd # 170528 KiB Router crashes
chmod 0755 /lib/firmware/xcpe_581816_580B11.bin # 898952 KiB Router crashes
chmod 0777 /usr/lib/libiptext.so # 60656 KiB Router crashes not

I found the reason:
It works well without the display-driver, when i install the kernelmodules again the fail happen again.

I was not know that exist a connection between display and flash, but later i read this: https://github.com/Quallenauge/lede-feeds-easybox904/commit/1fea28f8156344a6f7609f3e4becc0b969943d93
But i have not the know how to fix this Error. @Developers please help

Update:
OK the reason looks these commit: https://github.com/Quallenauge/lede-feeds-easybox904/commit/1fea28f8156344a6f7609f3e4becc0b969943d93
because i looks working witout it.
(I test only if /dev/fb0 exist and if i can change bigger files)

Update:
So i have mix the old and the new and it looks that i have fix the NAND-flash blocking on Telphon support use.
( write_reg_nolock(..) for SMP use and the old write_reg(..) for nosmp.
But without knowing what i am doing. The old developer had certainly thought something about it.
It will be cool if he can explain it.
I have put all driver together that missed in Openwrt for this device. (touchpat, wifi, and display)
https://github.com/Plonkbong/openwrt-feeds-easybox904-driver.git

#####################################################################################

Can somewhere explain why devmem needed at wlan driver and how can be removed.
Because when the device are upstream,
i think the images will be build by a the "default" xrx200 device which will build all images (is this correct)
And here no devmem are enable right ?
I thing it is not usefull to have an image that can not be used with the wifidriver.

#####################################################################################

@QAuge i have do an pulrequest for adding Easybox-904xDSL by using the single commits as you say.
I split them into main and uboot

1 Like

Any news ongoing with this situation?

My github account was short time flagged, but now it is public.
PR to openwrt are here: main and uboot
The pullrequests needs reviewer.
In my personal opinium and with my small know how in programming, it is OK.
the https://github.com/Plonkbong/create-openwrt-easybox904x-patches does not work correct / need work

General, all works without ISDN, but i have not test the stability longer 24h.
The default build at the moment is with SMP support, but without Telephon (VMMC) support.
But if the pullrequest will be accepted, it is nessasary to build your own image too, if you want all working drivers.

  • For the display the build must contain: Videosupport and the kmod-fb-tft module
    for this it is usefull to install this PR: https://github.com/openwrt/openwrt/pull/1885 because if not the build stops and need Kernelparameter.
  • For Wifi it need devmem support inside kernel and busybox
    ( can somewhere eplain why ? I guess that values inside the binary FW for the ralink-wifi will be changed in RAM ? )

For building you can use https://github.com/Quallenauge/Easybox-904-XDSL
or the both publish PR main and uboot

For the Wifi, touchpad and display the drivers are here: https://github.com/Plonkbong/openwrt-feeds-easybox904-driver
These Drivers are not in the PR because they need work, but they are working (read this thread about it).

For the more ore less required userspace packages specialy "lcd4linux" use this feed: https://github.com/Plonkbong/openwrt-feeds-easybox904-minpkgset

For telefon support change the bootargs manuelly before build or better use these patches:
main-split-in-SMP-VPE.patch and uboot-split-in-SMP-VPE.patch
These patches split into two images one with SMP and one with Telefon support, the good thing are if you do that, the Imagebuilder contain both variants and you can later after build use them to create an changed image with or witout SMP/Telefon support.

The code for xrx200 devices are not perfect in generell for more speed read here:

and here:

In the last threads you can find kernel patches for speed up, if you use them you must replace the default 4027-* patch by 4027-NET-MIPS-lantiq-support-fixed-link-incl-patch-904.patch
And if you want the 34kc arch instead the default 24kc Arch use this

I have used this diffconfig
note the the bootloader in this config make a higher CPU and RAM speed them normal (CONFIG_UBOOT_CONFIG_VR9_CPU_600M_RAM_300M=y) and it is untested.

for building i use this scripts:
in the first step i make an minimal build from source without extra packages:

#!/bin/sh

# prepare build look i these nessasary
git config --global user.email "you@example.com"; git config --global user.name "Your Name" # for merging into your local branch
cd /opt/build # your build directory
rm -r ./openwrt # delete openwrt directory if exist (not nessasary if not exist)



# clone openwrt source and create a new branch called: eb904x
git clone https://github.com/openwrt/openwrt.git
cd openwrt
git checkout -b eb904x


# install main pullrequest in branch eb904x 
git fetch origin pull/2060/head:pr001-eb904x
git rebase eb904x pr001-eb904x
git checkout eb904x
git merge pr001-eb904x


# install uboot pullrequest in branch eb904x 
git fetch origin pull/2061/head:pr002-eb904x_uboot
git rebase eb904x pr002-eb904x_uboot
git checkout eb904x
git merge pr002-eb904x_uboot


# add missed some extra kernelconfigparameter for videosupport
# without it the build stops and ask for the parameter
git fetch origin pull/1885/head:pullreq
git rebase eb904x pullreq
git checkout eb904x
git merge pullreq


# download and install split-into a SMP and VPE version patches
mkdir ./dl
rm -r ./dl; ln -sv /mnt/mapper/sda3/openwrt-source-dl dl # if you collect the whole openwrtsource like me inside /mnt/mapper/sda3/openwrt-source-dl use this line
cd ./dl
wget -O main-split-in-SMP-VPE.patch http://sprunge.us/vD2n7V
wget -O uboot-split-in-SMP-VPE.patch http://sprunge.us/ucLY0J
cd ..
git am < ./dl/main-split-in-SMP-VPE.patch
git am < ./dl/uboot-split-in-SMP-VPE.patch


# download and install patches for increase the ethernet speed
cd ./target/linux/lantiq/patches-4.14
wget -O 0901-add-icu-smp-support.patch 			https://pastebin.com/raw/pePncxSF
wget -O 0902-enable-external-irqs-for-second-vpe.patch 	https://pastebin.com/raw/ESKnmYbd
wget -O 0903-add-icu1-node-for-smp.patch 		https://pastebin.com/raw/0AvX3UF4

wget -O 0904-backport-vanilla-eth-driver.patch 		https://pastebin.com/raw/WYrJGw0e
wget -O 0905-increase-dma-descriptors.patch  		https://pastebin.com/raw/eNFjmidY
wget -O 0906-increase-dma-burst-size.patch 		https://pastebin.com/raw/M5Hei0FT

rm -v 4027-*
wget -O 4027-NET-MIPS-lantiq-support-fixed-link-incl-patch-904.patch http://sprunge.us/EQ5RWn
cd ../../../..


# this patch uses the 34Kc architecture for buildind instead of the defauld and older 24kc (not usefull because the packages are all 24kc)
#cd ./dl
#wget -O xrx200-use-34kc.patch http://sprunge.us/nINdvI
#cd ..
#patch -p1 < ./dl/xrx200-use-34kc.patch



# Change to your device: 
#	Target System = Lantiq / Suptarget = XRX200 / Target Profile = Easybox 904
# for later Display support: 
#	Global build settings  ---> / [*] Select all target specific packages by default
#	Global build settings  ---> / [*] Show packages that require graphics support (local or remote)
# for later Wifi support you need devmem support: 
# 	Global build settings  ---> / Kernel build options  ---> / [*] /dev/mem virtual device support
#	Base system  ---> / <*> busybox / [*] Customize busybox options / Miscellaneous Utilities  ---> / [*] devmem
# enable the easybox bootloader
# 	Boot Loaders  ---> / [*] u-boot-easybox904	
# eanable the SDK and the image builder
#	[*] Build the OpenWrt SDK (NEW)
# 	[*] Build the OpenWrt Image Builder
make menuconfig
make -j8 V=1 IGNORE_ERRORS=1 || make V=s IGNORE_ERRORS=1

I the next step i build the required packages that are not in openwrt for this device, with the SDK:

#!/bin/sh

cd /opt/build # my build directory change if needed

rm -rf ./owrtsdk
tar -xf $(find ./openwrt/bin/targets/lantiq/xrx200/openwrt-sdk-*.tar.xz)
mv -v $(find ./openwrt-sdk-* -type d -maxdepth 0) ./owrtsdk
cd ./owrtsdk
mkdir ./dl
rm -r ./dl; ln -sv /mnt/mapper/sda3/openwrt-source-dl dl # if you collect the whole openwrtsource like me inside /mnt/mapper/sda3/openwrt-source-dl use this line

cat ./feeds.conf.default |  grep -E -v "src-git[[:blank:]]*base.*" > ./feeds.conf

# If you do not have /opt/build/openwrt change it or use this line instead but note it is better to use same openwrt source that you have used for source build. 
#echo "src-git base https://github.com/openwrt/openwrt.git"
echo "src-git base file:///opt/build/openwrt" >> ./feeds.conf

echo "src-git eb904_driver https://github.com/Plonkbong/openwrt-feeds-easybox904-driver.git" >> ./feeds.conf
echo "src-git eb904_pkg    https://github.com/Plonkbong/openwrt-feeds-easybox904-minpkgset.git" >> ./feeds.conf

./scripts/feeds update -a

./scripts/feeds install -p eb904_driver fbtft
./scripts/feeds install -p eb904_driver touchpad
./scripts/feeds install -p eb904_driver ralink_bin
./scripts/feeds install -p eb904_driver ralink_inic

./scripts/feeds install -p eb904_pkg freetype
./scripts/feeds install -p eb904_pkg serdisplib
./scripts/feeds install -p eb904_pkg con2fbmap
./scripts/feeds install -p eb904_pkg lcd4linux-eb904
./scripts/feeds install -p eb904_pkg lcdcontroller

make -j2 IGNORE_ERRORS=1 V=1 || make -j1 IGNORE_ERRORS=1 V=s

The result are here:
eb904x-build_from_source-withspeeduppatch.tar.xz
shasum256 = 3001ac786e87f4fe4df1cd521756415a9569fbe73d4a34ac7b5aadef9f775d0e
eb904x-build_from_sdk.tar.xz
shasum256 = e6ecc24ced5b395e51ab5d39ca66047d4baec2563d4a9d043e325fe25e8f0878

2 Likes

I can explain. On weekend. Currently haven't time.

1 Like

@kovz It will be great to find a solution for the required devmem
If the pullrequest accept, it will not much help because the standart kernel are without devmem and it will be required to make a selfbuild too.

1 Like

@Plonk34 Sorry for this delay.
First of all I have to say, that all this devmem calls just a configuring for internal Ethernet switch MAC_5 port. Basing on previous investigation, there is a description of this setup https://github.com/Quallenauge/ralink_inic/blob/feature/lede_integration/Readme . It sets port 5 of internal switch to RGMII mode with clock 125MHz, 1G full duplex connected to external PHY wth addr 5 on mdio bus. Physically it connected to rt3883 with fake mdio address. Currently x200 ethernet driver support all this settings out of the box with fixed link phy specified as phy. Only one thing didn't exist in the driver - setting PCDU_5. We can find description for this register in original sources here https://github.com/uwehermann/easybox-904-xdsl-firmware/blob/master/linux/linux-2.6.32.32/include/switch_api/ifxmips_sw_reg.h
As we can see this register is responsible for Clock Delay settings. This means, that we have to add additional delay parameters to device tree and handle them in the driver.
May be this description is little bit muddied, please, do not hesitate and ask for more detailed description.

1 Like

Thanks @kovz for your reply,
I have less time too, for this reason i do a short look only,
but i understand that means devmem is not required if i implement the oldcode to the ifxmips_sw_reg.h
Or if it possible the oldcode into to the driver ?
But from where did you know the offset adresses for the values ?