This shows you the differences between two versions of the page.
chumby [2010/03/23 02:47] ladyada |
chumby [2016/01/28 18:05] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Stuff you'll need ====== | ||
- | - Chumby One - faster than the classic chumby | ||
- | - Other computer you can use as a terminal | ||
- | |||
- | What I did! | ||
- | |||
- | ==== Chumbify==== | ||
- | Bunnie visited and gave us 2 chumby ones. one had no working wifi. the other one seemed to be OK. Using the OK one | ||
- | |||
- | Activated it. works OK | ||
- | |||
- | ==== Turn on SSHD ==== | ||
- | [[http://wiki.chumby.com/mediawiki/index.php/Chumby_tricks#Hidden_screen_in_Control_Panel|Turn on sshd]] | ||
- | |||
- | ssh in as root, and turn off the control panel (to free up some memory and cycles) | ||
- | |||
- | <file> | ||
- | stop_control_panel | ||
- | </file> | ||
- | |||
- | Then make the sshd 'permanent' | ||
- | |||
- | <file> | ||
- | touch /psp/start_sshd | ||
- | </file> | ||
- | |||
- | ==== Install Dev ==== | ||
- | |||
- | Download & install silvermoon dev environment. Chmod +x the shell script and run it. This will take a bit | ||
- | |||
- | ==== Tried to install/port latest SDL ==== | ||
- | |||
- | Download the latest SDL tarball (we used 1.2.14) | ||
- | |||
- | run: | ||
- | <file> | ||
- | ./configure --enable-video-fbcon --disable-video-x11 --disable-dga --disable-esd --disable-oss --disable-pulseaudio --disable-joystick --disable-cdrom --without-x | ||
- | make | ||
- | mount -oremount,rw / | ||
- | make install | ||
- | </file> | ||
- | |||
- | Ran the test programs. Nothing happened. Kinda disappointed. So now going to backtrack | ||
- | |||
- | ==== Try ChumbyQuake SDL port ==== | ||
- | |||
- | |||
- | Download chumby_quake to /mnt/storage and uncompress. | ||
- | |||
- | Make my own 'bitops.h' file from kludged together stuff | ||
- | |||
- | Go into the SDL directory and run | ||
- | <file> | ||
- | ./configure --enable-alsa --enable-static --disable-oss --disable-esd --disable-pulseaudio --disable-video-x11 --enable-video-fbcon --disable-alsa-shared | ||
- | make | ||
- | make install | ||
- | </file> | ||
- | |||
- | run tests. Nothing happens on the display but it -says- it found stuff. Disappointed. backtrack some more | ||
- | |||
- | ==== Try chumbyquake ==== | ||
- | |||
- | Download chumby quake bins and stick on USB key. plug it in and run from command line. Had to use | ||
- | <file>export SDL_NOMOUSE=1 </file> to stop mouse complaints | ||
- | Audio is fine, pressing the top button makes the 'gun' fire. But no video. Disappointed. backtrack some more | ||
- | |||
- | ==== WTF is the frame buffer ==== | ||
- | |||
- | bunnie suggests maybe the framebuffers are swapped (seems there are two) so tried | ||
- | <file> | ||
- | dd if=/dev/zero of=/dev/fb0 | ||
- | </file> | ||
- | This wipes the screen (yay) so at least we know that the framebuffer is writable and is at /dev/fb0 | ||
- | |||
- | Now try to run quake again. Notice that the top line is the only thing that displays (easier to see this if you wipe the screen) | ||
- | |||
- | Look at old SDL tests - graywin, for example, 'works' but only displays top line. So its not the quake code and is something either in the library/driver/kernel | ||
- | |||
- | ==== Why is FB broken? ==== | ||
- | |||
- | OK so looking around some more, it looks like [[http://forum.chumby.com/viewtopic.php?id=4603|this has come up before]] - and the answer is the kernel is buggy (?) | ||
- | |||
- | So try to install new kernel with composite vid support (hey i might need it eventually) by [[http://forum.chumby.com/viewtopic.php?id=4283|running the script on the forums]] | ||
- | |||
- | Realise a little too late that this is going to cause the chumby to 'brick' due to the wifi driver having incompatibilities. eit. | ||
- | |||
- | ==== Unbrick chumby ==== | ||
- | |||
- | Follow the [[http://www.chumby.com/pages/latest_software|USB update instructions]] to get the kernel back. Hey its a good thing to know anyways! | ||
- | |||
- | ==== Really fix the FB ==== | ||
- | |||
- | So finally I use my reading comprehension to realize that really whats broken is just needing to poke the chip to tell it which FB to use. [[http://forum.chumby.com/viewtopic.php?id=4283|Following this helpful post]] I run | ||
- | |||
- | <file> | ||
- | wget http://files.chumby.com/hacks/switch_output | ||
- | chmod +x switch_output | ||
- | |||
- | stop_control_panel | ||
- | ./switch_output -l | ||
- | switch_fb.sh 0 | ||
- | </file> | ||
- | |||
- | ==== Try chumbyquake again ==== | ||
- | It runs! But it looks like some colorspace swappage is going on. I'll fix it later | ||
- | |||
- | Also tried the old SDL tests and they're working good now. yay. | ||
- | |||
- | ==== Port SIemu ==== | ||
- | |||
- | The 'easiest' emulator to port by far is SIemu. Its written in straight-up C, well documented and uses SDL as an underpinning. | ||
- | |||
- | * Had problem with audio so commented out all the Audio procedures. | ||
- | * Complained about screen size so changes graphics.h to use 320x240 screen | ||
- | * Runs! | ||
- | |||
- | OK much success. Now to fix it so audio works. SDL doesnt seem to know about audio device - perhaps we need to install ALSA lib first? | ||
- | |||
- | ==== Install ALSA ==== | ||
- | |||
- | We configure/make'd ALSA | ||
- | |||
- | ==== Build SDL with OSS ==== | ||
- | Trying to build SDL with ALSA (unpatched) didnt really work but then but then we realized that OSS is already in there so many we should just rebuild SDL? | ||
- | |||
- | Built SDL with following flags | ||
- | <file> | ||
- | ./configure --disable-esd --disable-pulseaudio --disable-video-x11 --enable-video-fbcon --disable-alsa | ||
- | </file> | ||
- | |||
- | compiled cleanly, ran test/loopwave and it worked! yay! | ||
- | |||
- | ==== Rebuild SIemu ==== | ||
- | |||
- | unpatched the audio and run it with new SDL that has audio. works! and keyboard works too! kpow kpow. | ||
- | much success. | ||
- | |||
- | |||
- | (note used 'original' SDL not chumbyquake SDL!) | ||
- | |||
- | ==== download stella & ./configure ==== | ||
- | Grab the source, try to build | ||
- | |||
- | <file>chumby:/mnt/storage/stella/stella-3.0# ./configure | ||
- | Running Stella configure... | ||
- | ./configure: line 341: printf: not found | ||
- | g++ | ||
- | ./configure: line 363: printf: not found | ||
- | 4.3.3, ok | ||
- | ./configure: line 493: printf: not found | ||
- | linux-gnu | ||
- | ./configure: line 504: printf: not found | ||
- | none found! | ||
- | </file> | ||
- | |||
- | OK, grab an [[http://forum.chumby.com/viewtopic.php?id=4474|updated busybox]] and install it | ||
- | |||
- | Now printf exists, try again | ||
- | |||
- | <file> | ||
- | ./configure --disable-debugger --disable-cheats | ||
- | make | ||
- | </file> | ||
- | |||
- | but gcc dies :( | ||
- | <file> | ||
- | g++ -Wp,-MMD,"src/emucore/.deps/PropsSet.d",-MQ,"src/emucore/PropsSet.o",-MP -O2 -Wall -Wno-multichar -Wunused -fno-rtti -fomit-frame-pointer -DUNIX -DBSPF_UNIX -DHAVE_GETTIMEOFDAY -DHAVE_INTTYPES -DWINDOWED_SUPPORT -DSOUND_SUPPORT -DSNAPSHOT_SUPPORT -DJOYSTICK_SUPPORT -Isrc/emucore -Isrc/emucore/m6502/src -Isrc/emucore/m6502/src/bspf/src -Isrc/common -Isrc/gui -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -Isrc/unix -c src/emucore/PropsSet.cxx -o src/emucore/PropsSet.o | ||
- | g++: Internal error: Killed (program cc1plus) | ||
- | Please submit a full bug report. | ||
- | See <http://gcc.gnu.org/bugs.html> for instructions. | ||
- | make: *** [src/emucore/PropsSet.o] Error 1 | ||
- | </file> | ||
- | |||
- | dmesg says we're out of memory! | ||
- | |||
- | <file> | ||
- | [ 809.010000] ntpd invoked oom-killer: gfp_mask=0x1201d2, order=0, oomkilladj=0 | ||
- | [ 809.010000] [<c02ff9bc>] (dump_stack+0x0/0x14) from [<c00777f4>] (oom_kill_process+0x5c/0x1d8) | ||
- | [ 809.020000] [<c0077798>] (oom_kill_process+0x0/0x1d8) from [<c0077f38>] (out_of_memory+0x1dc/0x254) | ||
- | [ 809.030000] r8:c2aac000 r7:c0445858 r6:000001be r5:c3dec900 r4:c2a68600 | ||
- | [ 809.040000] [<c0077d5c>] (out_of_memory+0x0/0x254) from [<c007ab98>] (__alloc_pages_internal+0x300/0x3bc) | ||
- | [ 809.050000] [<c007a898>] (__alloc_pages_internal+0x0/0x3bc) from [<c007cd6c>] (__do_page_cache_readahead+0x118/0x264) | ||
- | [ 809.060000] [<c007cc54>] (__do_page_cache_readahead+0x0/0x264) from [<c007cf24>] (do_page_cache_readahead+0x6c/0x74) | ||
- | [ 809.070000] [<c007ceb8>] (do_page_cache_readahead+0x0/0x74) from [<c0075168>] (filemap_fault+0x1d8/0x448) | ||
- | [ 809.080000] r7:00000000 r6:c2aac000 r5:00000000 r4:00000000 | ||
- | [ 809.080000] [<c0074f90>] (filemap_fault+0x0/0x448) from [<c0084958>] (__do_fault+0x54/0x488) | ||
- | [ 809.090000] [<c0084904>] (__do_fault+0x0/0x488) from [<c0085bf0>] (handle_mm_fault+0x2f4/0x7c0) | ||
- | [ 809.100000] [<c00858fc>] (handle_mm_fault+0x0/0x7c0) from [<c002da64>] (do_page_fault+0xf0/0x238) | ||
- | [ 809.110000] [<c002d974>] (do_page_fault+0x0/0x238) from [<c002dc34>] (do_translation_fault+0x18/0x80) | ||
- | [ 809.120000] [<c002dc1c>] (do_translation_fault+0x0/0x80) from [<c0026254>] (do_PrefetchAbort+0x18/0x1c) | ||
- | [ 809.130000] r7:00000000 r6:00053790 r5:00052acc r4:ffffffff | ||
- | [ 809.140000] [<c002623c>] (do_PrefetchAbort+0x0/0x1c) from [<c0026dc0>] (ret_from_exception+0x0/0x10) | ||
- | [ 809.150000] Exception stack(0xc2aadfb0 to 0xc2aadff8) | ||
- | [ 809.150000] dfa0: 00000000 00052974 000002f6 000002f7 | ||
- | [ 809.160000] dfc0: 00000000 00052acc 00053790 00000000 00053794 0004ecfc 0005234c bed1bb2c | ||
- | [ 809.170000] dfe0: 00008001 bed1bb00 0002859c 00017608 60000010 ffffffff | ||
- | [ 809.180000] Mem-info: | ||
- | [ 809.180000] Normal per-cpu: | ||
- | [ 809.180000] CPU 0: hi: 18, btch: 3 usd: 10 | ||
- | [ 809.190000] Active_anon:5856 active_file:40 inactive_anon:5862 | ||
- | [ 809.190000] inactive_file:112 unevictable:0 dirty:0 writeback:0 unstable:0 | ||
- | [ 809.190000] free:285 slab:767 mapped:26 pagetables:110 bounce:0 | ||
- | [ 809.210000] Normal free:1140kB min:1016kB low:1268kB high:1524kB active_anon:23424kB inactive_anon:23448kB active_file:160kB inactive_file:448kB unevictable:0kB present:65024kB pages_scanned:14 all_unreclaimable? no | ||
- | [ 809.230000] lowmem_reserve[]: 0 0 | ||
- | [ 809.230000] Normal: 23*4kB 7*8kB 0*16kB 1*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1140kB | ||
- | [ 809.240000] 377 total pagecache pages | ||
- | [ 809.240000] 0 pages in swap cache | ||
- | [ 809.250000] Swap cache stats: add 0, delete 0, find 0/0 | ||
- | [ 809.250000] Free swap = 0kB | ||
- | [ 809.250000] Total swap = 0kB | ||
- | [ 809.260000] 16384 pages of RAM | ||
- | [ 809.270000] 423 free pages | ||
- | [ 809.270000] 2647 reserved pages | ||
- | [ 809.270000] 630 slab pages | ||
- | [ 809.270000] 108 pages shared | ||
- | [ 809.280000] 0 pages swap cached | ||
- | [ 809.280000] Out of memory: kill process 2683 (g++) score 446 or a child | ||
- | [ 809.290000] Killed process 2684 (cc1plus) | ||
- | </file> | ||
- | |||
- | try.. | ||
- | |||
- | <file> | ||
- | if [ ! -e /mnt/storage/swap ] | ||
- | then | ||
- | echo "Making 256M swapfile" | ||
- | dd if=/dev/zero of=/mnt/storage/swap bs=1M count=256 | ||
- | mkswap /mnt/storage/swap | ||
- | fi | ||
- | swapon /mnt/storage/swap | ||
- | </file> | ||
- | |||
- | done and...sucess! | ||
- | |||
- | {{http://farm3.static.flickr.com/2760/4455436625_859aa97392.jpg}} | ||
- | |||
- | good news: you can play ROMs if you specify them on the command line. badnews: the ROM launcher not only doesnt work, but if it tries to run it gives some assert error and then doesnt 'release' the SDL library (or *something*) and it doesnt really work until reboot. :( |