Open kevinmehall opened 7 years ago
@kevinmehall this is amazing !!
Sorry, did not mean to change the review state at all. I have no idea how to undo the review request from @jiahuang. Sorry for the noise :(
I'm really excited about this :)
Me too, me too : ^ )
The Node binary package builds will need to be updated to use the SDK with the updated toolchain.
This will take a bit of time, but shouldn't be problematic. cc @reconbot
Here's how I confirmed this build:
SSH to Tessel 2
t2 root
Move to tmp and get the bin
cd ~
wget https://dl.dropboxusercontent.com/u/3531958/lede-ramips-mt7620-tessel-squashfs-sysupgrade.bin
or
cd ~
wget https://kevinmehall.net/tmp/lede-ramips-mt7620-tessel-squashfs-sysupgrade-bc3316c.bin
Upgrade the OS
sysupgrade lede-ramips-mt7620-tessel-squashfs-sysupgrade.bin
or
sysupgrade lede-ramips-mt7620-tessel-squashfs-sysupgrade-bc3316c.bin
Which should look something like this...
root@ash:~# sysupgrade lede-ramips-mt7620-tessel-squashfs-sysupgrade-bc3316c.bin
Saving config files...
killall: watchdog: no process killed
Sending TERM to remaining processes ... logd rpcd netifd odhcpd dbus-daemon mdnsd dnsmasq mDNSResponder ntpd ubusd askfirst
Sending KILL to remaining processes ... askfirst
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...
Writing from <stdin> to firmware ...
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...
Writing from <stdin> to firmware ...
Upgrade completed
Rebooting system...
packet_write_wait: Connection to 10.31.0.102 port 22: Broken pipe
That last line occurred when I unplugged/replugged the Tessel 2. Once it was back up...
rwaldron in ~
$ t2 root
INFO Looking for your Tessel...
INFO Connected to ash.
INFO Starting SSH Session on Tessel. Type "exit" at the prompt to end.
BusyBox v1.25.1 () built-in shell (ash)
Tessel 2 / Built on LEDE
root@ash:~# node -v
v6.10.3
root@ash:~#
(Celebrate!)
Upgrade t2-firmware
cd t2-firmware
git fetch upstream && git checkout -b lede upstream/lede
make clean && make
(assumes you have a remote called "upstream" that points at https://github.com/tessel/t2-firmware)
Once complete: unplug the Tessel 2, press and hold the button on the board while plugging back in. The board will now be in dfu mode
dfu-util -aFlash -d 1209:7551 -D build/firmware.bin
This should look something like this...
$ dfu-util -aFlash -d 1209:7551 -D build/firmware.bin
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1209:7551
Run-time device DFU version 0101
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0101
Device returned transfer size 256
Copying data from PC to DFU device
Download [=========================] 100% 15072 bytes
Download done.
state(7) = dfuMANIFEST, status(0) = No error condition is present
dfu-util: unable to read DFU status after completion
Don't worry about the last line. The Tessel 2 is now rebooting. Once it's rebooted...
t2 list
Which looks like...
rwaldron in ~/clonez/t2-firmware on lede
$ t2 list
INFO Searching for nearby Tessels...
USB ash
Strangely... The wifi light is on and I can connect via SSH, but the Tessel 2 doesn't appear in the list results.
The existing binaries are only key on node version, not toolchain version. We'll need to make another breaking change with the urls. We'll also want to consider supporting the newer and older tool chains. All doable.
Do we have a a concept of "version" for the Tessel OS? That might make sense tracking in package releases.
@rwaldron :
Strangely... The wifi light is on and I can connect via SSH, but the Tessel 2 doesn't appear in the list results.
Due to firewall ? At Ubuntu, I need to allow Tessel IP address for all ports. Dont know which one for mdns.
@huseyinkozan ah, it's very possible that something is amiss with the network at this office... I heard through the grapevine here that there has been configuration problems. I will try again from another network as soon as I get out from under this test262 work that I'm doing
I'm on a different, but very reliable network today and I'm noticing that Tessel 2 with LEDE is dropping the connection a lot
Check this out...
(The Tessel with LEDE)
root@lede:/# ubus call iwinfo info '{"device":"wlan0"}'
{
"phy": "phy0",
"ssid": "Bocoup",
"bssid": "44:D9:E7:03:34:55",
"country": "00",
"mode": "Client",
"channel": 6,
"frequency": 2437,
"txpower": 20,
"quality": 67,
"quality_max": 70,
"signal": -43,
"bitrate": 6500,
"encryption": {
"enabled": true,
"wpa": [
2
],
"authentication": [
"psk"
],
"ciphers": [
"ccmp"
]
},
"htmodes": [
"HT20",
"HT40"
],
"hwmodes": [
"b",
"g",
"n"
],
"hardware": {
"name": "Generic MAC80211"
}
}
Compared to:
(The Tessel with OpenWrt)
root@openwrt:~# ubus call iwinfo info '{"device":"wlan0"}'
{
"phy": "phy0",
"ssid": "Bocoup",
"bssid": "44:D9:E7:03:34:55",
"country": "00",
"mode": "Client",
"channel": 6,
"frequency": 2437,
"txpower": 20,
"quality": 61,
"quality_max": 70,
"signal": -49,
"bitrate": 57800,
"encryption": {
"enabled": true,
"wpa": [
2
],
"authentication": [
"psk"
],
"ciphers": [
"ccmp"
]
},
"hwmodes": [
"b",
"g",
"n"
],
"hardware": {
"name": "Generic MAC80211"
}
}
Notice the bitrate discrepancy? LEDE @ 6500 vs OpenWrt @ 57800 Honestly, I know very little about network device admin, so that might be meaningless.
And... just as I posted that, I saw this go by:
root@lede:/# [ 390.107369] wlan0: authenticate with 34:68:95:fa:de:8d
[ 390.136917] wlan0: send auth to 34:68:95:fa:de:8d (try 1/3)
[ 390.147537] wlan0: authenticated
[ 390.161138] wlan0: associate with 34:68:95:fa:de:8d (try 1/3)
[ 390.171754] wlan0: RX AssocResp from 34:68:95:fa:de:8d (capab=0x1411 status=0 aid=2)
[ 390.179954] wlan0: associated
[ 393.136639] wlan0: deauthenticated from 34:68:95:fa:de:8d (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
[ 396.989959] wlan0: authenticate with 44:d9:e7:03:34:55
[ 397.004662] wlan0: send auth to 44:d9:e7:03:34:55 (try 1/3)
[ 397.012701] wlan0: authenticated
[ 397.017152] wlan0: associate with 44:d9:e7:03:34:55 (try 1/3)
[ 397.025451] wlan0: RX AssocResp from 44:d9:e7:03:34:55 (capab=0x431 status=0 aid=1)
[ 397.033623] wlan0: associated
(I'm connected to the board via serial)
And now...
root@lede:/# ubus call iwinfo info '{"device":"wlan0"}'
{
"phy": "phy0",
"ssid": "Bocoup",
"bssid": "44:D9:E7:03:34:55",
"country": "00",
"mode": "Client",
"channel": 6,
"frequency": 2437,
"txpower": 20,
"quality": 63,
"quality_max": 70,
"signal": -47,
"bitrate": 39000,
"encryption": {
"enabled": true,
"wpa": [
2
],
"authentication": [
"psk"
],
"ciphers": [
"ccmp"
]
},
"htmodes": [
"HT20",
"HT40"
],
"hwmodes": [
"b",
"g",
"n"
],
"hardware": {
"name": "Generic MAC80211"
}
}
@rwaldron Maybe dmesg
output more info ?
@huseyinkozan will do... I had a meeting I had to jump into
@huseyinkozan https://pastebin.com/yPY2zKVR
@rwaldron Does your password have non ASCII chars : https://bbs.archlinux.org/viewtopic.php?pid=1569911#p1569911
And other, maybe not related bugs :
FWIW, there have been several deauthentications since I posted that pastebin https://pastebin.com/UVnYreNR
Does your password have non ASCII chars
Nope
And other, maybe not related bugs :
I'll have a look, thanks
Dont know but can this be the problem --with-intl=none
?
Ok. Good luck
Dont know but can this be the problem --with-intl=none ?
No, I'm not running anything with node at the moment, I'm just watching the serial dmesg logs go by
I also found this: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/548992
Any progress ? Do we have a TODO list for migration ?
@huseyinkozan until there's a solution to the network deauth'ing issue, this can't move forward (which is really disappointing)
I've done some long-running tests where I simply connect my Tessel 2 w/ Lede to a network and monitor the connection over long periods of time. I'm not seeing the deauth issue now, but the bitrates are still much lower than the Tessel 2 w/ Openwrt
This build may break existing LED functionality (the 4 connected to OpenWRT). I put this build on a board and I could no longer control any of the LEDs through the JavaScript API. It may be just a beaten up T2 though so someone else should confirm.
I am trying to build node with inspector support, but getting the error below.
To enable inspector I needed to enable icu support (https://github.com/nodejs/node/blob/v6.x/configure#L1291). I found this : https://github.com/openwrt/packages/tree/master/libs/icu and successfully built with --with-intl=system-icu
, with some small modifications.
It seems uClibc is causing this. After some digging, could not find a patch for this error. Any idea ?
mipsel-openwrt-linux-uclibc-g++ -I/home/hk/p/openwrt-tessel/openwrt/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -I../deps/v8_inspector/third_party/v8_inspector -I../deps/v8/include -I../deps/v8 -I/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink -pthread -Wall -Wextra -Wno-unused-parameter -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF /home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/.deps//home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj.target/v8_inspector_stl/gen/blink/platform/v8_inspector/protocol/Debugger.o.d.raw -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kec -mdsp -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -I/home/hk/p/openwrt-tessel/openwrt/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -I/home/hk/p/openwrt-tessel/openwrt/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/include -I/home/hk/p/openwrt-tessel/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include -I/home/hk/p/openwrt-tessel/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/include -c -o /home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj.target/v8_inspector_stl/gen/blink/platform/v8_inspector/protocol/Debugger.o /home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/v8_inspector/protocol/Debugger.cpp
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp: In function 'void blink::protocol::internal::intToStr(int, char*, size_t)':
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp:23:5: error: 'snprintf' is not a member of 'std'
std::snprintf(buffer, length, "%d", number);
^
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp: In function 'void blink::protocol::internal::doubleToStr(double, char*, size_t)':
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp:28:5: error: 'snprintf' is not a member of 'std'
std::snprintf(buffer, length, "%f", number);
^
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp: In function 'void blink::protocol::internal::doubleToStr3(double, char*, size_t)':
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp:33:5: error: 'snprintf' is not a member of 'std'
std::snprintf(buffer, length, "%.3g", number);
^
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp: In function 'void blink::protocol::internal::doubleToStr6(double, char*, size_t)':
/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj/gen/blink/platform/inspector_protocol/InspectorProtocol.cpp:38:5: error: 'snprintf' is not a member of 'std'
std::snprintf(buffer, length, "%.6g", number);
^
deps/v8_inspector/third_party/v8_inspector/platform/v8_inspector/v8_inspector_stl.target.mk:118: recipe for target '/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj.target/v8_inspector_stl/gen/blink/platform/inspector_protocol/InspectorProtocol.o' failed
make[4]: *** [/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out/Release/obj.target/v8_inspector_stl/gen/blink/platform/inspector_protocol/InspectorProtocol.o] Error 1
make[4]: *** Waiting for unfinished jobs....
rm 33eb92234851344b8992ea5826a49ba24e458a44.intermediate
make[4]: Leaving directory '/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/out'
Makefile:73: recipe for target 'node' failed
make[3]: *** [node] Error 2
make[3]: Leaving directory '/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1'
Makefile:110: recipe for target '/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/.built' failed
make[2]: *** [/home/hk/p/openwrt-tessel/openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/node-v6.11.1/.built] Error 2
make[2]: Leaving directory '/home/hk/p/openwrt-tessel/package/node/node'
package/Makefile:191: recipe for target 'package/feeds/tessel/node/compile' failed
make[1]: *** [package/feeds/tessel/node/compile] Error 2
make[1]: Leaving directory '/home/hk/p/openwrt-tessel/openwrt'
Build failed - please re-run with -j1 to see the real error message
/home/hk/p/openwrt-tessel/openwrt/include/toplevel.mk:181: recipe for target 'package/node/compile' failed
make: *** [package/node/compile] Error 1
LEDE is a fork of OpenWrt. The projects may soon re-merge.
This updates the kernel and all software, so all functionality should be thoroughly tested.
The updated LEDE patches have moved to the tessel/lede repo. We should get some of these into upstream LEDE.
Depends on https://github.com/tessel/t2-firmware/pull/234 (Note: This PR bumps the t2-firmware dependency version, which also brings in other t2-firmware changes)
I disabled the bootloader (uboot) build, since it fails to compile with the updated toolchain; I did not investigate. uboot is only needed for factory install or
t2 restore
, and you can use the existing binaries.LEDE switches the libc to musl, which fixes the issues we had with Node on uclibc. This also makes it simpler to build Rust programs, as
mipsel-unknown-linux-musl
is available throughrustup target add mipsel-unknown-linux-musl
, instead of needing to build libstd.The Node binary package builds will need to be updated to use the SDK with the updated toolchain.
Test build: Sysupgrade | SDK