-- first -- This is not intended to be a fork of Antonio's and others great work, merely an attempt to get it working on more generic x86 hardware with atheros wifi cards with as few a changes as possible. -- second -- Thanks to Antonio and others for being so open with their work. -- third -- Please see "How I created this robix image" further down this page. The name "robix" was Antonio's suggestion. Better than my x86robin. For general robin info see:- http://robin.forumup.it/index.php?mforum=robin and the open-mesh knowledge base - http://www.open-mesh.com/activekb/ For general robix info see:- http://robin.forumup.it/index.php?mforum=robin under the heading "X86 Robix" General Notes ############# N.B. for previous users of robix; this time you register with the dashboard using the wifi MAC address NOT the eth0 MAC (all robix versions from r1522 back) so this is now the same as with robin nodes. N.B. I found that when installing a new image on an already registered node that it was necessary to press the "Update Network Settings" button on the "Edit Network" page within open-mesh dashboard as otherwise the node will not get its settings as only receives empty responses from the dashboard. Previous robix releases to r2687 all used 16MB root fs partition but in keeping with sticking as closely as possibly to what Antonio has done I have left this build with it's default of 48MB rootfs partition. The kernel partition is unchanged at 4MB. Also it seems nodogsplash now works, thanks go to dplacko, see:- see http://robin.forumup.it/viewtopic.php?t=870&postdays=0&postorder=asc&start=15&mforum=robin - what a relief- but I haven't tested anything much yet, though the coova-chilli cp seems to work with our sussexnetshare own radius server setup. Only olsrd used in any testing. There doesn't appear to be any batman binary in this release. I am trying to stick close to Antonio's stuff as there are few enough people using this net4801 branch as it is. I have done a quick test of this version as both a repeater and gateway and it meshed in both cases with other robix instances and an Accton MR3201A-EU running robin version r2671. I have also tried successfully the wired lan function via eth1. Short comings:- - No journaled file system (it uses ext2) so ideally one should ssh in and halt prior to turning off. - There is no online upgrade facility, previously to this release robix looked to www.opensourcemesh.org for its upgrades as only mips binaries were dished out from www.open-mesh.org at the time but since Antonio has now started this x86 (net4801) branch I have left everything upgrade wise as it was in his branch in the hope that it might yet get seen too, or at least is now known as another arch so mips binaries are less likely to arise via an upgrade. A work around is to establish an alternate upgrade server via dashboard. - Wired Ethernet drivers very limited; this can be improved but I haven't got there yet, have to go into specific kernel config. http://wiki.openwrt.org/Generic_x86-HowTo but suspect out of date. http://forum.openwrt.org/viewtopic.php?pid=30487 also out of date maybe. - I have found a problem with MAC addresses during registration. You can't use wifi cards whose mac ends in ff or 00 as these would give IP addresses ending in 255 or 0 which is of course invalid. - As it is a near clone of Antonio's net4801 build the profile is one appropriate to 2 Ethernet ports. Although it works fine as a gateway on a machine with only one Ethernet port it does not work for wired clients when acting as a repeater. For this a second Ethernet port is required even though the first is unused. Messy I know but please see below for the reasons. eth0 = wan, eth1=wan - No pcmcia for old laptops as lower power nodes than old desktops or USB for additional eth when short of slots such as in low power sff systems. - This build seems OK on limited testing on sff compaq & Dell & Desktop IBM with cm9 wireless card in mini-pci - pci adapter. Note only atheros based wifi cards supported by robin/robix as yet. With olsrd you can do olsrd-mon.sh to get info about wifi visible neighbours from the local console, or try Antonio's new "olsrd-table.sh neigh" for a simpler view. Hope this helps someone. Installation ############ One way of installing robix on a machine is to boot that machine from the "robix_live_install_cd":- at the time of writing an iso of this cd is available at:- www.opensourcemesh.org in the downloads section. As you probably already know the linux dd command can also deploy the image to a drive for you, just be careful you don't dd it straight onto you system or home drive. I use a usb to ide interface and watch in the logs to see what the device appears as (tail -f /var/log/messages is your friend). so:- dd if=./robix_....._openwrt-x86-ext2.image of=/dev/sda where the ..... in the above is the missing version info (tab key should complete anyway) dd = direct data, or “dataset definition” “disk destroyer” or “data destroyer” (but unsure as lost in history of command) if = input file of = output file Oh the joys of linux. BE VERY CAREFUL of what device you dd to as it WILL go straight over what ever you like or don't like. You could try see what devices are what first via the mount command, then you should know what is extra when the target drive is plugged in. Note linux use to have hdaX as ide but modern kernels have sdX as ide. You need to unmount the device if its auto mounted or you may upset things. You don't need to fdisk or anything as this image is just that a byte by byte image with x86 boot sector, grub, and all. Worked for me on a few different drives. note old kernels had:- hda = master first channel hdb = slave first channel hdc = master second channel hdd = slave second channel and so on, but now all in scsi layer so have to look closely. How I created this robix image ############################## Robix is now build very differently from all previous versions up to and including r1522 (all 9 of them). Previously I modified the robin trunk but since then we have open-mesh and the new build system and very significantly Antonio's inclusion of the Soekris net4801 branch. Given that the net4801 board is essentially a 586 arch it makes much more sense to base robix (generic x86 robin) on this net4801 branch of robin. This build is to use trunk which as of this writing uses a different build system to the last tagged net4801 to date (2691) Antonio has also moved his code from svn2.hosted-projects.com to trac6.assembla.com since the last robix posting. The openwrt revision used is now 8.09.2 r18961 where as robix r2687 used 8.09.1 r16279. Taking from trunk makes this build a little more iffy but I wanted to try out some of the new stuff as it came along, I was particularly taken by the new modularity which at the time of writing is only available in trunk. From http://robin.forumup.it/about2964-robin.html we do:- svn co http://svn6.assembla.com/svn/RobinMesh/branches/net4801/trunk/ net4801-trunk The above line for me: Checked out revision 253 I needed to install gawk, flex, bison, & git-core (for olsrd-ninux) in addition to the development stuff I already had. What I changed to make robix r3253 from net4801-robin:- ####################################################### N.B. I must start using the new custom-patches facility but for now I will go old style, plus we need to change the top level make file itself. cd net4801-trunk Changed the etc/robin_version stamp to reflect the trunk snapshot downloaded above. sed -i -e 's/r3250/r3253/' ./Makefile use robix-default-config instead of net4801-default-config which is created below prior to the final make but is also included in the config directory of this tar. sed -i -e 's/net4801-default-config/robix-default-config/' ./Makefile make owrt_checkout - to get the openwrt tree make owrt_patches make robin_checkout - again I got revision 253 and the make process then applied the patches which installed the relevant packages And to use Antonio's olsr-dump.sh utility we need to get tcpdump svn co svn://svn.openwrt.org/openwrt/packages/net/tcpdump tcpdump I Checked out revision 20954 (but hasn't been changed for ages but best check if you are concerned) ln -s ../../tcpdump openwrt/package/tcpdump (should put this in more neatly) Now need to disable upgrades for robix but not sure how as /etc/config/general has empty upgd_srv but is then filled via interaction with open-mesh? This is potentially a problem area. To create the robix-default-config file I did:- ############################################### cp patches/net4801-default-config openwrt/.config - to put the net4801 config in place so we can alter it. cd openwrt I modified the net4801-default-config in the following ways:- make menuconfig Target profile from Soekris Net4801 to Generic (gives greater choice of hardware etc) in Base system/busybox/Configuration/ Process Utilities - watch - because I like it. in "Utilities" I added:- disc/fdisk - just like to have it badblocks because I like to be able to check for these tune2fs - to give options Libraries - added libpcap for new olsr-dump.sh Network - added tcpdump for new olsr-dump.sh but might only need the new tcpdump mini? In "Kernel modules" I added:- File systems - added kmod-fs-ext2 & kmod-fs-ext3 as I want to go over to ext3 Antonio recently added the ext2 module and then removed it I want to try ext3 so not sure here really. If only ext2 then neither is needed but I don't know yet for ext3 and I wanted this build to be an experiment to try out ext3 but haven't looked into it enough yet. Network Devices - added all drivers except siit so ended up with:- so 3c59x, 8139too, e100, e1000, pcnet32, r8169, sis900, sky2, tg3, via-rhine netsemi and ne2k-pci where already selected from net4801 config left usb & pcmcia support out for now as could cause problems; too many changes for now so leaving for the time being, but want to able to use old laptops. saved as default (as .config) ready for make on exiting from make menuconfig and copied back into patches from the terminal ready for the top make file to use. cp .config ../patches/robix-default-config cd .. - so back in net4801-trunk dir The resulting image booted but had profile problems as was obviously not recognized as a SOEKRIS (via /etc/init.d/profile from robin-mesh trunk) yet this code base is taken from robin and patched (By Antonio) to work specifically with the Net4801 profile and so there were issues:- robin-mesh-net4801 branch overwrites the /lib/robin/preup/20_network.sh with a version that only instantiates:- cp -f /etc/network-default /etc/config/network cp -f /etc/wireless-default /etc/config/wireless But the original 20_network.sh from rogin branch does:- cp -f ${NETWORK_CONFIG_PATH}-default /etc/config/network cp -f ${WIRELESS_CONFIG_PATH}-default /etc/config/wireless And so is aware of other profiles. Given there are quite a few patches to robin to make it into net4801 (which appears to have 2 Ethernet ports) I am going to play safe and simply make robix a net4801 clone with the above mentioned changes. In previous in house builds I just changed the /etc/init.d/profile (from robin-mesh) such that in stead of bottoming out as profile "default" it defaults to the Net4801 profile. This is definitely a hack but for the time being it means we inherit the consistency of this profile and the branch patched specifically for it. Until I or others have a better applied understanding of changing this profile I am reluctant to deviate more than this in the robix builds. This resulted in:- DEVICE_NAME="Generic" PROFILE="Net4801" But as of Changeset 237 we have no Generic DEVICE_NAME defined but we do have a drop in directory to put hardware identifier scripts. The problem with robix is that it has only Generic HW in mind so no real way to classify. To generate a drop in file from inside net4801-trunk I did:- echo -e '#!/bin/sh\nDEVICE_NAME="Generic"\nPROFILE="Net4801"' > ./robin-build/robin-mesh/files/lib/robin/hw_detect/090_is_Generic Which would be run before any other hw check and so establish a default other than blank & 'default' profile. Cleaner and less invasive than changing the core scripts which is what I did in previous in house robix experiments ie:- via:- sed -i -e 's/default/Net4801/' ./robin-build/robin-mesh/files/etc/init.d/profile but as stated this after changeset 237 leaves the DEVICE_NAME blank. I also copied across into the openwrt dir the dl (download) dir from a previous robix build so that most downloads would not have to be repeated. I did the following in little bits so I could catch any errors:- make standard_config cd openwrt make package/robin-mesh-clean - to clean from previous tries make download time make -j2 - about 30 mins on a modern laptop -j2 for dual core so parallel build where this build is still in charge. And the resulting images should be in ./bin so:- cd bin dd if=openwrt-x86-ext2.image of=/dev/sdx (where x is CAREFULLY chosen as your destination device which will be completely overwritten) or use the pre-compiled image from the robix_image directory in this tar with the command:- dd if=robix_r3253_openwrt-x86-ext2.image of=/dev/sdx