Milkymist One Firmware
Contents |
[edit] ChangeLog
[edit] Next
[edit] 2012-07-09
- More patch goes to RTEMS upstream, now we have one pending request
- Softusb-input improvement by Werner, Michael and Xiangfu
- Automatic save all performance config changes to default.per
- Ctrl + Enter direct goto rendering mode
- Add new feature: Wireless over Ethernet by using a OpenWrt powered gadget
- Yaffs update due to RTEMS API changes
- Build with latest RTEMS commit 2012-07-09
[edit] 2012-04-02
- Disable mouse click exit rendering mode
- Ctrl+H : display keyboard shortcut information in rendering mode
Hold F9 / Hold left button: Web update F1 / F2 / F3: Set video in CVBS green/blue/red F5 / F6: Increase/decrease brightness F7 / F8: Increase/decrease contrast Ctrl+Esc: Exit fun F1: Show patch name(simple mode) F9 / RIGHT: Next patch(simple mode) F11 / LEFT: Previous patch(simple mode) Ctrl+Alt+Del / Hold F10 / Hold middle button: Reboot PrtScr: Screenshot Ctrl+F1: Switch resolution
- Add MIC boost support and enable by default
- New USB firmware loading mechanism
- New usb command. allow load usbsoft-input firmware from file. useful for debug usbsoft-input.bin
- FPL: new grammar: accept Perl-like var = expr if cond syntax (new-style only)
- FPL: Remove legacy midiX variables, check wheel.fnp for new midi grammar
- FPL: if can no longer be used as a variable name
- Modernize "Geiss & Werner - Tornado (Rain Dance MIDI RMX).fnp"
- Fixed issue #35 take the currect settings to full screen
- Build with latest RTEMS 2012-03-30 15:19:18
- Update the rtems-yaffs2 with latest RTEMS api
[edit] 2012-02-26
- Support USB-MIDI controller device, like LV3 and ICON, two patches for LV3
- Support multiple image files
- Cache the compiled patches. no needs to re-compile next time.
- New MIDI document, new pacman and wheel pathces
- Support // and /*...*/ comments under patch language
- Support --, <, >, !, &&, ||, and the ternary operator under patch language
- Support semicolons at the end of assignments under patch language
- New style on pre_frame and pre_vertex
- Add sound indicator under Audio
- Show channel number in MIDI monitor, change the channel numbers presented to user one-based
- Fullscreen preview button under Video Input
- Enable DMX chain mode by default. act as DMX fixture by default
- Change the ftpd root to /ssd
- Save user define ip, gateway, dns. by default using Google Public DNS
- Support some keyboard+mouse combo devices check VERSIONS files for detail on 'hid' branch
- Using ISE 13.4 to synthesis all bitstreams
- New UART core
- Sync with latest rtems 2012-02-23 18:09:55 (GMT)
- Sync yaffs2 to '121c055437f23d9d6bc7b57d36ecf128b447013f'
- reflash_m1.sh update Version to 2012-02-28. move the tested images to --qi option. now it is the advice option for end-users
- New regression tests tools for patch language for software developer from Werner
[edit] 2011-11-29
- Support the inclusion of user-supplied pictures in PNG and JPG formats into the patches.
- Support patch mashup.
- Support selection of composite on any connector, S-Video and Component sources in the GUI.
- Keyboard shortcuts to switch between composite video sources: F1/F2/F3 to select green/blue/red inputs (respectively).
- Screenshot shortcut remapped to Ctrl-Pause
- In simple performance mode, skip "advanced" patches (MIDI/DMX/OSC) and patches that use video input when no video signal is present.
- Always run DHCP in the background instead of using the regular RTEMS configuration. Use periodic retries in case of failure.
- Send a black screen instead of no signal during startup.
- Prevent going outside of /ssd in file dialogs.
- MIDI/DMX configuration: holding the mouse on the midiX/idmxX label sets the channel on MIDI/DMX events (Werner)
- New PFPU scheduler from Werner.
- Improve patch compiler register allocation, so we can use more variables in the patches.
- Random delay in simple mode.
- Simplify shutdown dialog.
[edit] 2011-11-13
- Use US keyboard layout by default
- Simple mode: reset timer on manual patch switch
- Do not allow empty filenames in file dialogs
- Fix MIDI synchronization (Werner)
- Fix MIDI over OSC (Werner)
- Support for upstream RTEMS 4.11
- Support for upstream YAFFS
[edit] 2011-07-13
- Support for French language
- Automatic update over the internet
- Online patch pool
- Keyboard shortcut: Meta key + arrows/enter to move/click the mouse
- File dialog: search option
- Simple performance mode options:
- patch title display at patch switch
- automatic patch switch after delay
- L pushbutton for previous patch
- Keyboard shortcuts to change video input parameters live in rendering mode:
- F5/F6: brightness +/-
- F7/F8: contrast +/-
- Changed F8 "Start rendering" shortcut to F2
- Changed F8 "Stop rendering" shortcut to ESC
- MIDI variables
- OpenSoundControl and IR patch configuration autobuild
- MIDI and IR: remove capture button, always capture when window is open
- Update and show system settings dialog box on resolution switch shortcut
- Disable memory card automount
[edit] 2011-04-23
- RSS wall
- Simple performance mode (just use all patches found in flash)
- Active pushbuttons:
- LEFT (PB3/F9): update the entire box over Ethernet, download new patches from shared pool. (To be finalized)
- MIDDLE (PB2/F10): boot, start rendering some patch right away using simple performance mode. Press again (long press) to turn off.
- RIGHT (PB1/F11): switch to next patch (in simple performance mode)
- Support for different keyboard maps: US, French, German
- Automatic build of patch sets for keyboard and MIDI
- Display line numbers in patch editor
- Display explicative dialog box in rescue mode
- Improved network settings: DNS, gateway
- Do not load system configuration in rescue mode
- Renamed /flash to /ssd
- Web update (incomplete/experimental)
- F1 key to display patch name when rendering
- Bugfixes:
- Crash with autostart when resolution is 640x480
- All known Ethernet instability problems
- DHCP IP address not taken when DHCP is enabled at boot
- Subdirectories not always working on flash
- First patch dialog box not updated on performance file load
[edit] 2011-04-06
- Support for 640x480, 800x600 and 1024x768 resolutions (GUI only)
- New color theme
- Quiet autostart mode
- GUI usability improvements:
- Mouse wheel scrolling support
- Delete key working on selected text in editor
- Ctrl-A selects all text
- File dialog box: extension filter, hide /dev, open files with double click
- Scroll bars in patch editor
- File manager
- Optional: PDF reader (online help)
- Selectable wallpaper
- Screenshots (Xiangfu)
- More DMX channels
- Display MTK version
- Mount memory card in read only mode
- Optional: LZMA compression of the flash boot image
[edit] 2010-12-23
- Video input support
- Flash upgrade support
- YAFFS2 flash filesystem
- Configurable system settings
- DHCP client support
- Performance autostart
- FTP server
- Telnet server
- Text messages from OpenSoundControl
[edit] 2010-11-19
- Patch rendering support (same features as in the demo renderer)
- Support patch change on:
- keyboard events
- IR events
- OSC events
- MIDI events
- DMX variables
- OSC variables
- GUI settings for keyboard, IR, MIDI, OSC, DMX
- DMX table
- DMX spy
- Performance load and save
- Audio mix table
- Patch editor
- Variable monitor
- Wallpaper
[edit] Wireless Over Ethernet
TP-Link TL-WR703N is a very small router. it powered by USB which can direct plug-in to Milkymist One, after reflash OpenWrt image. we can access this router by using Json RPC.
[edit] Milkymist One side
- On the Milkymist One side we have a GUI configure windows and using curl to access OpenWrt Json RPC, the source code is here
- The Milkymist One should get 192.168.1.100 when enable DHCP. this ip address is hardcode under OpenWrt DHCP config file.
[edit] OpenWrt side
- The OpenWrt config file is here, the image file for reflash is here,
- Some default config files, changed network to 192.168.42.x, forward those port to Milkymist One: 21, 23, 4444
- Milkymist One will call those two files: m1-wireless.lua , m1-wireless.sh for configure the wireless
- Once the Wireless connect. 703n will remember this network. but it can only remember one networks.
- The 703n boot time is longer then Milkymist One. so we needs wait a little bit more time after Milkymist One boot.
[edit] Json Variables
- For login:
{"jsonrpc":"1.0","method" :"login","params" :["root", ""],"id":0}
- Get wireless networks:
{"jsonrpc":"1.0","method" :"exec","params" :["/opt/m1-wireless.sh get"],"id" :0}
- Configure wireless:
{"jsonrpc":"1.0","method" :"exec","params" :["/opt/m1-wireless.sh set ESSID PASSWORD psk2"],"id" :0}
- Get wireless status:
{"jsonrpc":"1.0","method" :"exec","params" :["/opt/m1-wireless.sh status"],"id" :0}
[edit] Develop
Milkymist Flickernoise main source code is C. the SDK can download at : http://milkymist.org/updates/2011-11-29/for-rc3/Flickernoise-lm32-rtems-4.11-SDK-for-Linux-x86_64.tar.bz2 the SDK include ALL you needs to develop Flickernoise. if you wnat compile those stuff from scratch. you can look info the scripts file: read the 'Makefile' under this project and the README.html. short intro about the compile steps:
- compile the toolchian first
- compile rtems
- compile libfpvm (lib for rendering)
- compile mtk the GUI
- compile libs: libpng, jbig2dec, freetype2, mupdf, curl, expat, oscparse
- compile rtems-yeaffs2. the filesystem we using in NOR flash
- compile the host tools that flickernoise needed : https://github.com/milkymist/milkymist/tree/master/tools
- compile Flickernoise.fbi
- compile host tools we used to flash. urjtag: git://urjtag.git.sourceforge.net/gitroot/urjtag/urjtag
[edit] rtems
rtems is link the OS. if someone want write the Milkymist One driver and interested in real-time OS. then this is a good project look into.
[edit] Flickernoise
this is like the application. build with rtems. link the GUI. etc. give us a interface.
[edit] Rendering-libs
those libs is for rendering
[edit] libs
like: libpng, jbig2dec, freetype2, mupdf, curl, expat, oscparse. people can port more libs to Flickernoise.
[edit] Test
- boot from tftp
when m1 boot to BIOS. press 'ESC'. then type 'netboot' . m1(192.168.0.42) will try to load '/var/lib/tftpboot/boot.bin' under 192.168.0.14.
- direct flash the result to m1.
using Werner's tools. 'm1nor' under git://projects.qi-hardware.com/wernermisc.git, using script file under git://github.com/milkymist/flickernoise.git/flash
- reboot by urjtag. save below to m1reboot.sh
#!/bin/bash BATCH_FILE=`mktemp` cat > ${BATCH_FILE}<<EOF cable milkymist detect instruction CFG_OUT 000100 BYPASS instruction CFG_IN 000101 BYPASS pld reconfigure EOF jtag -n ${BATCH_FILE} rm -f ${BATCH_FILE}
[edit] Debug
[edit] Test Plan
- Webupdate
- All patches compile and render fine
- For test filesystem, try to copy from/to Milkymist One by using lftp, filezilla.
- Input system. keyboard, mice
- USB-MIDI controller. I have ICON for test
- react to OSC message. can test by midi2osc.
- Sound system. MIC, line in and line-out
- MIDI port by using usb-midi converter.
- DMX chain mode and DMX controller mode
- VGA output, 640x480, 800x600, 1024x768
- Video input. I have one camera for test.
- IR remode
- Test switch patches by some saved performance files.
- Make sure the reflash_m1.sh support reflash MAC address
- UI. All windows, sub-windows should function correctly (need to list details on what to test).
[edit] Linux
Our Linux development is focused here: https://github.com/milkymist/linux-milkymist |
[edit] boot OpenWrt
- wget http://fidelio.qi-hardware.com/~xiangfu/build-milkymist/milkymist-openwrt.minimal-20120127-1251/openwrt-lm32-root.ext4 -O initrd.bin
- wget http://fidelio.qi-hardware.com/~xiangfu/build-milkymist/milkymist-openwrt.minimal-20120127-1251/simpleImage.milkymist_one -O boot.bin
- copy them to your tftp folder like /var/lib/tftpboot, change your IP to 192.168.0.14
- press 'ESC' while m1 booting. type 'netboot'
[edit] Backup
- Make sure your laptop and Milkymist one are connect.
- Connect Milkymist One and your PC to same home router, check the 'Settings' for get the M1 IP address
- Direct connect Milkymist one to your PC eithernet port. disable the DHCP. by default Milkymist One IP address is 192.168.0.42
- Setup Username and Password under 'Settings'
- Using lftp
# sudo apt-get install lftp # mkdir M1_backup && cd M1_backup # lftp USER@192.168.0.42 # mirror # for full backup Milkymist one. you will see all files under M1_backup
- Using filezilla
Just backup all files and folders under Remote site:/