tessel / openwrt-tessel

OpenWrt build scripts and package feed for Tessel 2
Other
32 stars 14 forks source link

Update to LEDE 17.01.1 and Node 6.10.3 #72

Open kevinmehall opened 7 years ago

kevinmehall commented 7 years ago

LEDE is a fork of OpenWrt. The projects may soon re-merge.

Test build: Sysupgrade | SDK

tikurahul commented 7 years ago

@kevinmehall this is amazing !!

tikurahul commented 7 years ago

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 :(

rwaldron commented 7 years ago

I'm really excited about this :)

huseyinkozan commented 7 years ago

Me too, me too : ^ )

rwaldron commented 7 years ago

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

rwaldron commented 7 years ago

Here's how I confirmed this build:

  1. SSH to Tessel 2

    t2 root
  2. 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
  3. 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!)

  4. 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.

reconbot commented 7 years ago

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.

huseyinkozan commented 7 years ago

@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.

rwaldron commented 7 years ago

@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

rwaldron commented 7 years ago

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

rwaldron commented 7 years ago

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.

rwaldron commented 7 years ago

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"
        }
}
huseyinkozan commented 7 years ago

@rwaldron Maybe dmesg output more info ?

rwaldron commented 7 years ago

@huseyinkozan will do... I had a meeting I had to jump into

rwaldron commented 7 years ago

@huseyinkozan https://pastebin.com/yPY2zKVR

huseyinkozan commented 7 years ago

@rwaldron Does your password have non ASCII chars : https://bbs.archlinux.org/viewtopic.php?pid=1569911#p1569911

And other, maybe not related bugs :

rwaldron commented 7 years ago

FWIW, there have been several deauthentications since I posted that pastebin https://pastebin.com/UVnYreNR

rwaldron commented 7 years ago

Does your password have non ASCII chars

Nope

And other, maybe not related bugs :

I'll have a look, thanks

huseyinkozan commented 7 years ago

Dont know but can this be the problem --with-intl=none ?

Ok. Good luck

rwaldron commented 7 years ago

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

huseyinkozan commented 7 years ago

Any progress ? Do we have a TODO list for migration ?

huseyinkozan commented 7 years ago

https://github.com/tessel/openwrt-tessel/pull/73

rwaldron commented 7 years ago

@huseyinkozan until there's a solution to the network deauth'ing issue, this can't move forward (which is really disappointing)

rwaldron commented 7 years ago

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

johnnyman727 commented 7 years ago

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.

huseyinkozan commented 7 years ago

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