User Tools

Site Tools


goflex:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
goflex:start [2011/05/03 18:21] neutronscottgoflex:start [2023/11/04 22:30] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Seagate GoFlex Home Hacks // Debian ======
 +
 +Lots of people working on this. But the information is scattered, and I've not seen the point to some of it... Guess if you want something done right, you have to do it yourself? ;)
 +
 I started this 4/23 so this is a work-in-progress, aka a severely disorganized page. Wiki clean-up usually happens after I put the device back together, and that could take awhile since my free time is limited. I started this 4/23 so this is a work-in-progress, aka a severely disorganized page. Wiki clean-up usually happens after I put the device back together, and that could take awhile since my free time is limited.
 +
 +[edit: 8/1] I guess it'll be some time. This project was short lived. I got debian on it and then it's done. ha. been running fine just another computer on the network now...
 +
 +===== bootrom disassembly =====
 +someone with dockstar-like device (bootrom 1.11) asked for my dump to compare and see why they cannot boot from serial as we can. my results:
 +
 +ASCII dump from U-boot: http://goflex.scottn.us/bootrom121.txt \\
 +Binary file: http://goflex.scottn.us/bootrom121.bin \\
 +Simple objdump disassemble: http://goflex.scottn.us/bootrom121.dis
 +
 +
 +===== external serial port =====
 +first thing you'll want is serial console access to the device. i soldered my Nokia cable onto the board almost directly after opening the device, but then i had to put it back together before the kids came home for the weekend. what can carry 3-wire serial and be small? RadioShack catalog #274-0245 is 3-conductor stereo submini audio jack, and #274-244 is submini phone plug (3/32"). Visit here for the pics: [[goflex:serialport|Serial port install]].
  
 ===== debian ===== ===== debian =====
Line 6: Line 23:
  
 it says it includes the debian patches, but it comes up as normal 2.6.32... meh. it says it includes the debian patches, but it comes up as normal 2.6.32... meh.
-I added a bit also to arch/arm/kernel/head-common.S so that we need not pass arcNumber. This would help later for making installable without editing bootloader. :P+I added a bit also to arch/arm/kernel/head-common.S so that we need not pass arcNumber. This would help later for making installable without editing bootloader. :P It seemed that although the Goflex Home has USB/IDE enabled in U-Boot, the arcNumber variable is not. This was partially verified later by a grep of the u-boot sources supplied in GPL release by Seagate.
  
 We can start serial commands at u-boot to load USB key with [[http://goflex.scottn.us/uMulti-2.6.32-5-kirkwood-goflex|my kernel+initrd]]. For example: We can start serial commands at u-boot to load USB key with [[http://goflex.scottn.us/uMulti-2.6.32-5-kirkwood-goflex|my kernel+initrd]]. For example:
Line 17: Line 34:
 [[goflex:debianboot]] [[goflex:debianboot]]
  
-Creation of the USB key or even ext2 partition on the SATA can be easy with debootstrap. I will attempt emdebian's soon to see if it's dependencies are a bit less a tangled web of bloat. ;)+Creation of the USB key or even ext2 partition on the SATA can be easy with debootstrap. I will attempt emdebian's soon to see if it's dependencies are a bit less a tangled web of bloat. ;) [**edit** nah I probably won't. Debian's running well, just follow [[http://linux.koolsolutions.com/2009/01/07/howto-tell-apt-get-not-to-install-recommends-packages-in-debian-linux/|this guide]] to ensure dumb things like X11 libraries getting installed with openssh doesn't happen.]
  
 http://packages.debian.org/search?arch=armel&keywords=debootstrap http://packages.debian.org/search?arch=armel&keywords=debootstrap
Line 29: Line 46:
  
 including kirkwood image ensures you get all the modules and initramfs things, you can use my uMulti to do actual booting. including kirkwood image ensures you get all the modules and initramfs things, you can use my uMulti to do actual booting.
-===== external serial port ===== 
-ok i had to put it back together before the kids come home for the weekend. what can carry 3-wire serial and be small? RadioShack catalog #274-0245 is 3-conductor stereo submini audio jack, and #274-244 is submini phone plug (3/32"). Visit here for the pics: [[goflex:serialport|Serial port install]]. 
  
-===== goflex mods ===== +===== openwrt ===== 
-Lots of people working on this. But the information is scattered, and I've not seen the point to some of it... Guess if you want something done right, you have to do it yourself? ;)+i built this too as backup. the tiny rootfs lives in my ext2 /boot partition for now. maybe will flash to NAND some time. i also mirrored snapshot of trunk packages for the day, in case libraries change or whatever. even placed a jfs.ko there to access the jfs share if i need to. i didn't make it a kmod opkg, sorry;\ 
 + 
 +http://goflex.scottn.us/openwrt/ 
 + 
 +===== consistent nand map between kernels ===== 
 +first set the two mtdids/mtdparts variablesthen you can use mtdparts add. for example: 
 +<code> 
 +set mtdids nand0=orion_nand 
 +set mtdparts mtdparts=orion_nand:1M(uboot)ro 
 +mtdparts add nand0 6M uImage 
 +mtdparts add nand0 - rootfs 
 +</code> 
 + 
 +That is my nand's layout inside factory firmware. You'll also need to mention $(mtdpartsinside bootargs. 
 + 
 +Then I was hoping that using **mtdparts del nand0,0** and removing the uboot partition would suffice on making normal kernels ignore the 4-bit ECC and printing a screen-full of bad block messages upon boot. :\
  
 +===== mods to official firmware =====
 Just captured this: [[http://wrt.scottn.us/goflex-bootlog.txt|bootlog]] Just captured this: [[http://wrt.scottn.us/goflex-bootlog.txt|bootlog]]
  
Line 56: Line 87:
 really don't want to have to JTAG this. i'm scurred. took about 30min to do 64kB on my router. would probably take all day to do 512kB on this.. really don't want to have to JTAG this. i'm scurred. took about 30min to do 64kB on my router. would probably take all day to do 512kB on this..
  
-This is example only. Probably you want to change it some. This example uses FAT on partition 1, and sets root to be partition 2. You maybe want ext2 on 1 partition. Replace 'fatload' with 'ext2load' and '-part2' with '-part1' .. just throwing ideas out there..+This is example only. Probably you want to change it some. This example uses FAT on partition 1, and sets root to be partition 2. You maybe want ext2 on 1 partition. Replace 'fatload' with 'ext2load' and '-part2' with '-part1' .. just throwing ideas out there.. I use this for mine though.
  
 <code> <code>
-set boot_nand $(bootcmd) +usb_start=usb start; fatload usb 0:1 $(loadaddr) /uImage 
-set usb_start 'usb start; fatload usb 0:1 $(loadaddr) /uImage' +usb_boot=echo usb success; set bootargs $(console) root=/dev/disk/by-path/platform-orion-ehci.0-usb-0:1:1.0-scsi-0:0:0:0-part2; bootm $(loadaddr) 
-set boot_usb 'echo usb success; set bootargs $(console) root=/dev/disk/by-path/platform-orion-ehci.0-usb-0:1:1.0-scsi-0:0:0:0-part2; bootm $(loadaddr)' +ide_start=set filesize; ide reset; ext2load ide 0:1 $(loadaddr) /uImage 
-set ide_start 'ide reset; fatload ide 0:1 $(loadaddr) /uImage' +ide_if_loaded=print filesize 
-set ide_boot 'echo ide success;set bootargs $(console) root=/dev/disk/by-path/platform-sata_mv.0-scsi-0:0:0:0-part2;bootm $(loadaddr)' +ide_boot=echo ide success;set bootargs $(console) root=/dev/disk/by-path/platform-sata_mv.0-scsi-0:0:0:0-part2;bootm $(loadaddr) 
-set bootcmd 'run usb_start boot_usb; run ide_start ide_boot; run boot_nand'+boot_nand=nand read.e 0x800000 0x100000 0x300000; setenv bootargs $(console) $(bootargs_root); bootm 0x800000 
 +bootcmd=run usb_start usb_boot; run ide_start; run ide_if_loaded ide_boot; run boot_nand
 </code> </code>
  
-Look at it all first with 'printenvbefore invoking 'saveenv'many terminal emulators will paste too fastSo I modified picocom to usleep() some between writes. I later edited it to help with UART loading into the BootROM.+**NOTE** I noticed last night that 'ext2loadreturn value is broken in 1.1.4. The way 'runworks is you only run the next variable if the previous one returns success, which is represented by 0In Marvell's GPL source, ext2load returns 'filelen' so basically ext2load always returns failureDidn't see a problem yet with fatload so didn't check. I use 'filesize' as test variable now.
  
-===== x86_64 binary toolchain ===== +===== cross compiling toolchain ===== 
-Ubuntu 10.10 has: apt-get install gcc-arm-linux-gnueabi+Ubuntu already has: apt-get install gcc-arm-linux-gnueabi 
 + 
 +Very handy if you're using x86_64 and want to get your hands dirty right away without compiling a compiler 2-3 times. :P
  
 ===== serial recovery ===== ===== serial recovery =====
Line 80: Line 114:
  
 As you see from this log, the header must be changed to boot from serial: [[goflex:uartboot]]. As you see from this log, the header must be changed to boot from serial: [[goflex:uartboot]].
 +
 +===== lcd4linux =====
 +Somewhat unrelated, but I attached a Coby DP-152 I got for $5. Edited the example a bit. Here's [[http://goflex.scottn.us/picframe/lcd4linux.conf|mine]]. I think it's usable now, but I'm uncertain really what stats I want displayed or how yet. ;) Large thread about these little 128x128 LCDs found here: http://forum.doozan.com/read.php?2,2435
 +
 +
goflex/start.1304446885.txt.gz · Last modified: 2023/11/04 22:29 (external edit)

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki