mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2025-01-04 16:53:48 +01:00
Add pages with notes on uhttpd and building an image.
parent
857c476a6f
commit
a5669c9a14
36
BuildOpenwrt.md
Normal file
36
BuildOpenwrt.md
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# Building OpenWRT for the WifiBox
|
||||||
|
|
||||||
|
TODO: add steps to clone openwrt, install required software, create an image (on OSX) and fetch package feeds
|
||||||
|
|
||||||
|
When changing enabled packages, make sure the image has been created (check the timestamp). If not, the contents were probably too large to fit on the device.
|
||||||
|
Luci and Python (even mini) are notable for causing this.
|
||||||
|
|
||||||
|
## Configuration changes
|
||||||
|
- set target system ar7xxx/ar9xxx
|
||||||
|
- set target profile to TP-Link MR3020 or WR703N
|
||||||
|
- disable all target images except squashfs
|
||||||
|
- enable 'Build the OpenWrt SDK' (or just toolchain?) in case you want to include your own packages
|
||||||
|
- enable Base System/wireless-tools (Utilities/iwinfo not needed unless cmdline tool is needed)
|
||||||
|
- enable Languages/Lua/lua
|
||||||
|
- enable Libraries/libuci-lua
|
||||||
|
- Languages/Lua/libiwinfo-lua
|
||||||
|
- (*ignore this one, it crashes uhttpd*) enable Network/Web Servers&Proxies/uhhtpd-mod-lua and follow this: http://wiki.openwrt.org/doc/uci/uhttpd#embedded.lua
|
||||||
|
- disable Network/ppp and Network/ppp/ppp-mod-pppoe
|
||||||
|
- (Global build settings) disable kernel symbol table, debug info and sysrq support
|
||||||
|
- (Global build settings) disable ipv6
|
||||||
|
|
||||||
|
## Extra changes (optional)
|
||||||
|
- enable LuCI/Collections/luci if you want it
|
||||||
|
- enable LuCI/Themes/luci-theme-bootstrap if you like
|
||||||
|
- enable Languages/Python/python-mini if you want Python
|
||||||
|
- enable uhttpd debug messages (Network/Web Servers\/Proxies)
|
||||||
|
|
||||||
|
## Further notes on setting up an unconfigured device
|
||||||
|
- it might be necessary to remove the host key from .ssh/known_hosts to prevent an ssh error
|
||||||
|
- it might be handy to add a host entry to `.ssh/config` so you don't need to use an account name and can use a hostname instead of IP
|
||||||
|
- set password to have the device switch from telnet to ssh
|
||||||
|
- upload `.ssh/id_rsa.pub` to `/etc/dropbear/authorized_keys` for public key authorization
|
||||||
|
- change the wired IP to something not very common to avoid collisions (e.g. 192.168.5.1/24)
|
||||||
|
- upload files under <<file extra/wifibox-restore-files master>> to the device
|
||||||
|
- deploy contents of src directory to /usr/share/lua/autowifi (create the directory first with mkdir -p)
|
||||||
|
- check the <<file src/README master>> in the src directory for final setup steps
|
26
UhttpdCrash.md
Normal file
26
UhttpdCrash.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Analyzing uhttpd crashes
|
||||||
|
|
||||||
|
TODO: describe when this happens (sometimes in portal mode and always when webroot does not exist?).
|
||||||
|
|
||||||
|
- First, enable debug support in the binary by modifying package/network/services/uhttpd/Makefile: add `TARGET_CFLAGS += -ggdb3 -O0` below `TARGET_LDFLAGS`.
|
||||||
|
- Next, enable building the toolchain (we need a gdb which understands mips images).
|
||||||
|
- Make sure symbol stripping is disabled (under Global build settings) and check that other settings are correct as well (e.g. core dumps and process debugging enabled).
|
||||||
|
- After updating with the new firmware, enable core dumps by running `ulimit -c unlimited`.
|
||||||
|
- Stop uhttpd (`/etc/init.d/uhttpd stop`).
|
||||||
|
- Run it yourself: `uhttpd -f -p 80 -h /www`.
|
||||||
|
- Do something to make it crash and voila.
|
||||||
|
- After copying the file over to the host computer, open it in gdb with this command: `<gdb-executable> uhttpd <core-file>`.
|
||||||
|
There must be a more logical place, but at least the gdb executable can be found under the `staging_dir/toolchain/<target-spec>/bin` directory.
|
||||||
|
(More likely is `build_dir/target-<spec>/OpenWrt-Toolchain-<spec>/toolchain-<spec>/bin`...add it to the PATH for easier access)
|
||||||
|
|
||||||
|
## Some handy gdb commands
|
||||||
|
From [here](http://stackoverflow.com/questions/5115613/core-dump-file-analysis).
|
||||||
|
|
||||||
|
- bt (backtrace)
|
||||||
|
- frame n (select stack frame n)
|
||||||
|
- info locals (display variables)
|
||||||
|
- list (display code)
|
||||||
|
- print v
|
||||||
|
|
||||||
|
## Further notes
|
||||||
|
- [posts about uhttpd on openwrt](https://dev.openwrt.org/search?q=uhttpd)
|
Loading…
Reference in New Issue
Block a user