mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2025-01-02 07:53:49 +01:00
Remove all content and replace with a link to the actual wiki.
parent
64b49bc4b4
commit
9ab5c7491d
@ -1 +0,0 @@
|
|||||||
(functionality breakdown / milestones)
|
|
@ -1 +0,0 @@
|
|||||||
(repo, wiki, general resources like openwrt website etc.)
|
|
@ -1,25 +0,0 @@
|
|||||||
# Outline of the WifiBox project
|
|
||||||
|
|
||||||
*TO ADD*: (openwrt-based, components:luacgi(+uci)+www-iface+init.d)
|
|
||||||
|
|
||||||
Consider this a sketch, including some ideas which might never end up in the final application.
|
|
||||||
|
|
||||||
* Printer driver interface
|
|
||||||
Perhaps using the idea of printer/protocol/firmware families can reduce code duplication
|
|
||||||
* _for each printer_: implementation of the interface (leaving room for elaborate code, e.g. an S3G implementation)
|
|
||||||
* Web interface
|
|
||||||
* Doodle3D interface
|
|
||||||
... (suggestions: drawing+shaping interface, management of previous drawings, sharing with other users, etc.)
|
|
||||||
* gcode/s3g/... upload interface as well as manual command execution
|
|
||||||
* Printing interface (track progress etc.)
|
|
||||||
* Called from Doodle3D interface, direct file upload and manual command execution
|
|
||||||
* Administration interface (wifi config, printer settings, miscellaneous like for instance usbip)
|
|
||||||
* Interface to fetch and upload models from/to services like thingiverse
|
|
||||||
* Automatic wifi setup
|
|
||||||
* Self-update mechanism
|
|
||||||
* Anything else...?
|
|
||||||
|
|
||||||
## Init script logic
|
|
||||||
When the device boots, the init script tries to find any known network. If one is found, it will connect to it, otherwise it switches to AP mode.
|
|
||||||
IT might be necessary to create a lockfile to prevent accidental reruns (when could this happen?). In this case a mechanism would also be needed to remove the file on shutdown and detect a stale lockfile (e.g. after unclean reboot).
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
## Update mechanism
|
|
||||||
|
|
||||||
__TODO__: make this document intelligable
|
|
||||||
|
|
||||||
_Idea_: could the ipkg tool play a major part here? just releasing a new ipkg at the feed url then would be enough. just need a way to rollback..but ipkg can probably take care of that too
|
|
||||||
|
|
||||||
- create a rigid versioning system
|
|
||||||
- server-side script to report available versions (scans directory and reports back versions available in xml/json/plain)
|
|
||||||
- reported versions translate to archives and checksums (e.g. ?.tar.gz and ?.md5sum)
|
|
||||||
- all code must be contained within one directory, symlinks to place 'hooks' within the system
|
|
||||||
- updating should not only install/overwrite new files or symlinks but also remove old ones
|
|
||||||
- updater keeps at least the last-known-good version to rollback to
|
|
||||||
- the updater is part of the system; in case it gets broken accidentally there should be a command-line option (e.g. through fail-safe) to restore a previous version (or immediately fetch a new debugged one)
|
|
||||||
- (!) a fallback webupdater in case of booting trouble might be good to have
|
|
||||||
- create deploy script (included in release package; should probably work incrementally?)
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
|||||||
# Creating an OpenWrt package
|
|
||||||
|
|
||||||
In order to include the wifibox code in an OpenWrt image and have it deployed automatically, it must be available as a package. This could also prove useful with regard to auto-updating the code since ipkg can handle downloading, checksumming and upgrading automatically.
|
|
||||||
|
|
||||||
The basic requirements for this are the presence of a Makefile for the OpenWrt build system to read, a feed to discover the package and a publicly available download source for the package itself.
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
* [Overview of the build system](http://www.ccs.neu.edu/home/noubir/Courses/CS6710/S12/material/OpenWrt_Dev_Tutorial.pdf)
|
|
||||||
* [Creating feeds (OpenWrt website)](http://wiki.openwrt.org/doc/devel/feeds)
|
|
||||||
* [Creating packages (OpenWrt website)](http://wiki.openwrt.org/doc/devel/packages)
|
|
||||||
* [Plain cross-compilation (OpenWrt website)](http://wiki.openwrt.org/doc/devel/crosscompile)
|
|
||||||
* http://hype-free.blogspot.nl/2009/04/compiling-software-for-openwrt-and.html
|
|
||||||
* [Hello world tutorial](http://manoftoday.wordpress.com/2007/10/11/writing-and-compiling-a-simple-program-for-openwrt/)
|
|
||||||
* http://vivekian2.wordpress.com/2007/03/28/building-your-own-package-for-openwrt/
|
|
||||||
* (site does not load) http://hanez.org/openwrt-building-software-packages.html
|
|
||||||
* https://forum.openwrt.org/viewtopic.php?id=10117
|
|
||||||
* [Another example Makefile](https://forum.openwrt.org/viewtopic.php?id=9951)
|
|
@ -1,23 +0,0 @@
|
|||||||
# Web interfaces for viewing/sending Gcode
|
|
||||||
|
|
||||||
## To be reviewed
|
|
||||||
...
|
|
||||||
|
|
||||||
## Probably not
|
|
||||||
- R2C2_WebInterface
|
|
||||||
node.js
|
|
||||||
- WebRap
|
|
||||||
python no deps
|
|
||||||
- pronterweb
|
|
||||||
python no deps
|
|
||||||
|
|
||||||
## Discarded (too large, unusable interface, unsupported)
|
|
||||||
node.js -> no mips big endian
|
|
||||||
python -> only 200 k left on device...almost no room for dependencies
|
|
||||||
|
|
||||||
- BotQueue
|
|
||||||
- OctoPrint
|
|
||||||
python many deps (not all supported out of the box by openwrt)
|
|
||||||
- Printrun
|
|
||||||
- Repetier-Server
|
|
||||||
- printerface
|
|
@ -1,25 +0,0 @@
|
|||||||
# Firmware variants
|
|
||||||
|
|
||||||
* Sprinter
|
|
||||||
* Marlin (forked from Sprinter)
|
|
||||||
g-code and m-code
|
|
||||||
* Jetty (forked from Marlin?)
|
|
||||||
* Sailfish / G3firmware
|
|
||||||
s3g
|
|
||||||
Uses s3g/x3g which requires substantial recoding of g-code. Several implementations:
|
|
||||||
- https://github.com/makerbot/ReplicatorG (java)
|
|
||||||
- https://github.com/makerbot/s3g (python)
|
|
||||||
- https://github.com/cbiffle/s3g-toolkit (C++, attempts to convert s3g files into s3g command streams)
|
|
||||||
* Repetier
|
|
||||||
Supports regular g-code as well as a binary encoded variant which can be translated directly.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
http://www.reprap.org/wiki/List_of_Firmware
|
|
||||||
sprinter <- marlin <- jetty
|
|
||||||
marlin vs sprinter: https://github.com/ErikZalm/Marlin (extra gcodes)
|
|
||||||
sailfish (s3g?)
|
|
||||||
sprinter
|
|
||||||
repetier
|
|
||||||
binair+gcode (https://github.com/repetier/Repetier-Firmware/blob/master/Repetier/repetier%20communication%20protocol.txt)
|
|
@ -1,6 +0,0 @@
|
|||||||
# Miscellaneous notes
|
|
||||||
|
|
||||||
- [source code of iwinfo (old revision)](https://dev.openwrt.org/browser/trunk/package/iwinfo/src/iwinfo_lua.c?rev=29403)
|
|
||||||
- [Press4Connect](https://github.com/nutbolt/press4connect/tree/master/files/p4config)
|
|
||||||
- Used [urlcode.lua](from https://github.com/keplerproject/cgilua/blob/master/src/cgilua/urlcode.lua) for decoding URLs
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
# 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>`.
|
|
||||||
The gdb executable can be found under the `staging_dir/toolchain/<target-spec>/bin` directory.
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
Note that remote debugging is also supported: http://wiki.openwrt.org/doc/devel/gdb.
|
|
||||||
|
|
||||||
## Further notes
|
|
||||||
|
|
||||||
- The connected issue: <<issue 3>>
|
|
||||||
- [posts about uhttpd on openwrt](https://dev.openwrt.org/search?q=uhttpd)
|
|
@ -1,58 +0,0 @@
|
|||||||
Set up OpenWRT on OSX
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
Building was relatively easy in my case (Snow Leopard), but this might differ depending on OS/versions/etc. The guide I followed (roughly) is <http://thismachinechills.blogspot.nl/2013/02/installing-macports-with-openwrt.html>. I got along fine with only following these steps+notes:
|
|
||||||
|
|
||||||
- Install required macports dependencies...for me, Xcode's gcc worked just fine...so maybe that step can be left out.
|
|
||||||
- However, the longer list of ports just below must be installed or you will get missing dependencies during 'make prereq'.
|
|
||||||
- Create a case-sensitive HFS+ sparse image (10GB will do nicely).
|
|
||||||
- Fetch openwrt through svn and update feeds (aka packages).
|
|
||||||
- If you'd like all packages available for building in 'make menuconfig', run: 'scripts/feeds install -a'.
|
|
||||||
- build! (e2fsprogs worked fine for me but I'm not using Lion so...?)
|
|
||||||
|
|
||||||
Further notes:
|
|
||||||
|
|
||||||
- deselect everything but SquashFS under 'Target images' (e.g. jffs2 is not needed)
|
|
||||||
- under 'Target profile', for the TP-Link box, only select your specific model (scroll way down)
|
|
||||||
- I think luci must be enabled in menuconfig (under 'Luci'->Collections...)
|
|
||||||
- when flashing a new image, the sysupgrade one will do fine except the very first time (according to openwrt docs)
|
|
||||||
- enabling some drivers can only be done by modifying the kernel? (make kernelconfig)
|
|
||||||
- keep track of packages and features (de)selected in menuconfig (or modify by hand...)
|
|
||||||
- prefix path with macports path: 'export PATH=/opt/local/bin:$PATH'
|
|
||||||
- If the make system keeps complaining about outdated svn repo/executable versions, this seems not to be a problem
|
|
||||||
- wr703n reverse engineered <http://dangerousprototypes.com/2012/10/10/reverse-engineering-layout-of-tp-link-tl-wr703n-802-11n-router/>
|
|
||||||
- To get the new image on a device, follow this guide <http://wiki.openwrt.org/doc/howto/generic.sysupgrade> after getting the image on the device (copy it to /tmp). A warning 'Error fixing up TRX header' seems quite harmless.
|
|
||||||
- In case you end up with a broken ssh session, don't forget you can quit ssh by typing '~.' (on an empty line so hit enter before to be sure).
|
|
||||||
|
|
||||||
|
|
||||||
Various guides / links
|
|
||||||
======================
|
|
||||||
- WR703N openWRT setup: <http://wiki.xinchejian.com/wiki/Install_OpenWRT_on_TPlink_WR703N>
|
|
||||||
- WR703N wlan config: <http://companje.nl/doku.php?id=/openwrt>
|
|
||||||
- (osx cross-compile) <http://www.hsmm-mesh.org/hsmm-mesh-forums/view-postlist/forum-1-general/topic-12-building-openwrt-on-os-x.html>
|
|
||||||
- (osx cross-compile) <https://forum.openwrt.org/viewtopic.php?id=34676>
|
|
||||||
- (cross compile eigen code) <http://wiki.openwrt.org/doc/devel/crosscompile>
|
|
||||||
- (cross compile eigen code) <http://hype-free.blogspot.nl/2009/04/compiling-software-for-openwrt-and.html>
|
|
||||||
- (eclipse setup) <http://downloads.openwrt.org/docs/eclipse.pdf>
|
|
||||||
- Hardware extension (2 more USB ports) <http://www.kean.com.au/oshw/WR703N/>
|
|
||||||
- Mouse support (not a solution to the USB1 issue) <http://santiago-saldana.blogspot.nl/2010/01/mouse-working-in-openwrt.html>
|
|
||||||
- (GENERAL) run make using CPU idle time only, found here: http://wiki.openwrt.org/doc/howto/build
|
|
||||||
$ ionice -c 3 nice -n19 make -j 2
|
|
||||||
|
|
||||||
|
|
||||||
Build environment
|
|
||||||
=================
|
|
||||||
A script (possibly buggy) to set appropiate variables for cross-compiling openwrt code for the tp-link wr703n router. It assumes your image is called 'openWRT-build-fs-10GB'.
|
|
||||||
Source the script to modify current shell environment (using regular execution runs it in a temporary subshell).
|
|
||||||
|
|
||||||
cat<<EOF>set-openwrt-build-env
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
export PATH=/opt/local/bin:$PATH:/Volumes/openWRT-build-fs-10GB/trunk/staging_dir/toolchain- mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin
|
|
||||||
export STAGING_DIR=/Volumes/openWRT-build-fs-10GB/trunk/staging_dir
|
|
||||||
export CC=mips-openwrt-linux-uclibc-gcc
|
|
||||||
export LD=mips-openwrt-linux-uclibc-ld
|
|
||||||
|
|
||||||
#this is used to pass to configure --target
|
|
||||||
export TGT_MIPS=mips-openwrt-linux-uclibc
|
|
||||||
EOF
|
|
@ -1,51 +0,0 @@
|
|||||||
# Building OpenWrt for the WifiBox
|
|
||||||
|
|
||||||
__TODO__: add steps to clone openwrt, install required software, create an image (on OSX) and fetch package feeds
|
|
||||||
|
|
||||||
This page describes how to build an OpenWrt image for the WifiBox as well as additional steps to get it up and running.
|
|
||||||
|
|
||||||
_Note_: After changing enabled packages and building, 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.
|
|
||||||
|
|
||||||
|
|
||||||
## 1. Adding a custom feed for the wifibox package
|
|
||||||
|
|
||||||
This has only been tested on OSX. The feed source will eventually be replaced with an online one.
|
|
||||||
|
|
||||||
- In the trunk directory, run `cp feeds.conf.default feeds.conf`
|
|
||||||
- Create a feed directory somewhere (e.g. /Users/me/wrt-wifibox-feed) and clone the WifiBox code into it as a subdirectory called `wifibox`
|
|
||||||
- Add this line to `feeds.conf`: `src-link wifibox /Users/me/wrt-wifibox-feed`
|
|
||||||
- Install the feeds' packages by running: `./scripts/feeds update wifibox; ./scripts/feeds install -a -p wifibox`
|
|
||||||
- While in the menuconfig in the next section, enable the wifibox package (listed under Miscellaneous).
|
|
||||||
|
|
||||||
|
|
||||||
## 2. 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)
|
|
||||||
- (_ignore_) enable Languages/Lua/lua
|
|
||||||
- (_ignore_) enable Libraries/libuci-lua
|
|
||||||
- (_ignore_) Languages/Lua/libiwinfo-lua
|
|
||||||
- (_ignore this one, it crashes uhttpd_) enable Network/Web Servers&Proxies/uhttpd-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
|
|
||||||
|
|
||||||
### 2.1 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)
|
|
||||||
|
|
||||||
|
|
||||||
## 3. 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
|
|
14
Home.md
14
Home.md
@ -1,13 +1 @@
|
|||||||
# The Doodle3D WifiBox Wiki
|
The Doodle3D WiFiBox wiki can be found here: <http://www.doodle3d.com/wiki>.
|
||||||
|
|
||||||
This contains notes previously kept in several local files. Keeping notes here is more maintainable and integrates nicely with the issue tracker as well as the repository.
|
|
||||||
|
|
||||||
## Milestones
|
|
||||||
|
|
||||||
A number of milestones have been created in the issue tracker. Bitbucket sorts them alphanumerically (kind of) so internal milestones are prefixed with '0_', release versions with higher numbers and anything else without any prefix. 'IP' stands for 'Internal Progress'.
|
|
||||||
|
|
||||||
- (0_IP_1) First development milestone, implementation of basic supporting functionality.
|
|
||||||
- (0_IP_2) Second development milestone, same as 0_IP_1 but in a larger scope.
|
|
||||||
- (0_IP_n) Nth development milestone, at some point one has to be defined at which all core functionality is present and working reasonably well.
|
|
||||||
- (1.0) First release version.
|
|
||||||
- (Later) Indeterminate, but nonetheless worthwhile implementing at some point.
|
|
||||||
|
40
_Sidebar.md
40
_Sidebar.md
@ -1,40 +0,0 @@
|
|||||||
## Table of contents
|
|
||||||
|
|
||||||
1. The Doodle3D Wifibox
|
|
||||||
1.1 Introduction
|
|
||||||
1.2 Planning overview
|
|
||||||
1.3 Resources
|
|
||||||
|
|
||||||
2. Firmware
|
|
||||||
[2.1 Overview](2.-Firmware/2.1-Overview.md)
|
|
||||||
2.2 RESTful API
|
|
||||||
|
|
||||||
3. Research
|
|
||||||
3.1 Outline for self-update functionality
|
|
||||||
3.2 Notes on packaging the code
|
|
||||||
3.3 3D printing related
|
|
||||||
3.3.1 Webinterfaces for sending/viewing gcode
|
|
||||||
3.3.2 Various firmware implementations
|
|
||||||
|
|
||||||
4. Everything else
|
|
||||||
4.1 Miscellaneous notes
|
|
||||||
4.2 Analyzing uhttpd crashes
|
|
||||||
|
|
||||||
A1 Building OpenWrt
|
|
||||||
A2 Preparing OpenWrt for Wifibox
|
|
||||||
|
|
||||||
|
|
||||||
## ---old---
|
|
||||||
|
|
||||||
[Building OpenWrt](wiki/BuildOpenwrt)
|
|
||||||
[Analyzing uhttpd crashes](wiki/UhttpdCrash)
|
|
||||||
[Outline for self-update functionality](wiki/SelfUpdater)
|
|
||||||
[Miscellaneous notes](wiki/MiscNotes)
|
|
||||||
[An outline of the project structure](wiki/ProjectOutline)
|
|
||||||
[Webinterfaces for sending/viewing gcode](wiki/GcodeSenders)
|
|
||||||
[Various firmware implementations](wiki/Firmwares)
|
|
||||||
[Notes on packaging the code](wiki/Packaging)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## ---aanpassen---
|
|
Loading…
Reference in New Issue
Block a user