Old main page

Novena is the codename for an open computing platform. It is a work in progress, but nearing a point where we think it could be viable for public release.

Real-time updates and announcements can be tracked by following @novenakosagi on twitter.

Alpha evaluators: Please visit Using Novena PVT1 for more info.

Hardware
http://bunniefoo.com/novena/novena_depop_clean_labels_sm.jpg above in hires

Above is an annotated diagram of the circuit board. The dimensions of the board are approximately 121mm x 150mm — sized to fit comfortably underneath a standard-sized laptop keyboard. The image above is rotated versus the installation orientation; the port farm is meant to be on the right hand side of the laptop, not on the bottom. The overall height of the board is just under 14mm, with the height being set by the thickness of an Ethernet connector. The thickness on my Lenovo T520 base portion is just under 24mm, so once we stack a keyboard and plastics on this it’ll be just about the same.

http://bunniefoo.com/novena/novena_pop_clean_sm.jpg above in hires

http://bunniefoo.com/novena/novena_back_sm.jpg above in hires

Features

 * Freescale iMX6 CPU — same footprint can support dual-lite and quad versions:
 * Quad-core Cortex A9 CPU with NEON FPU @ 1.2 GHz
 * Vivante GC2000 OpenGL ES2.0 GPU, 200Mtri/s, 1Gpix/s (*)
 * NDA-free datasheet and programming manual


 * Internal memory:
 * Boot from microSD firmware
 * 64-bit, DDR3-1066 SO-DIMM, upgradable to 4GB
 * SATA-II (3Gbps)


 * Internal ports & sensors:
 * mini PCI-express slot (for wifi, bluetooth, mobile data, etc.)
 * UIM slot for mPCIx mobile data cards
 * Dual-channel LVDS LCD connector (up to QXGA (2048×1536) @ 60Hz resolution) with USB2.0 side-channel for a display-side camera
 * Resistive touchscreen controller (note: captouch displays typically come with a controller)
 * 1.1W, 8-ohm internal speaker connectors
 * 2x USB2.0 internal connectors for keyboard and mouse/trackpad
 * Digital microphone
 * 3-axis accelerometer
 * header for optional AW-NU137 wifi module (*)
 * 3x internal UART ports


 * External ports:
 * HDMI
 * SD card reader
 * headphone + mic port (compatible with most mobile phone headsets, supports sensing in-line cable buttons)
 * 2x USB 2.0 ports, supporting high-current (1.5A) device charging
 * 1Gbit ethernet


 * Fun features:
 * 100 Mbit ethernet — dual Ethernet capability allows laptop to be used as an in-line packet filter or router
 * USB OTG — enables laptop to spoof/fuzz ethernet, serial, etc. over USB via gadget interface to other USB hosts
 * Utility serial EEPROM — for storing crash logs and other bits of handy data
 * Spartan-6 CSG324-packaged FPGA — has several interfaces to the CPU, including a 2Gbit/s (peak) RAM-like bus — for your bitcoin mining needs. Or whatever else you might want to toss in an FPGA.
 * High-speed I/O expansion header (new to PVT version, different from photos above)

Items marked with an asterisk (*) require a closed-source firmware blob, but the system is functional and bootable without the blob.

Keep an eye on bunnie's blog for updates and notes. You can also discuss at the forum.

Battery board
http://bunniefoo.com/novena/novena_batt_labels_sm.jpg above in hires

http://bunniefoo.com/novena/novena_batt_sm.jpg above in hires

http://bunniefoo.com/novena/novena_batt_back_sm.jpg above in hires

In order to give maximum power management flexibility, the battery interface functions are implemented on a daughtercard. I co-opt a cheap and common SATA-style connector to route power and control signals between the mainboard and the daughtercard. To prevent users from accidentally plugging a hard drive into the battery port, I inverted the gender on the mainboard of the battery-use SATA connector from the actual SATA-II connector. The current battery card is meant to work with the battery packs used by most RC enthusiasts — LiPo packs ranging from 2S1P to 4S1P (2-cell to 4-cell). RC packs are great because they are designed for super-fast charging. They are also cheap and easy to buy. For the board-side battery plug I decided to use the Molex connector found on classic disk drives, since they are cheap, common, and easy to assemble with simple tools. I couldn’t use a standard RC connector because the vast majority of them are designed for in-line use, and the few that have board mounts are too thick or too weird for use in this application.

The battery board can charge batteries at rates in excess of 4A. This means charging a 3-cell, 45Wh (4Ah) pack in about one hour. I’m estimating that a typical power consumption for a reasonable system configuration might be around 5-6W, so that’s 7-8 hours of runtime with a 1-hour charge time using that type of battery pack. Of course, since the whole laptop is user-configurable, typical power consumption is really hard to estimate — you could drop in a monster LCD and a power-hungry magnetic hard drive with loads of peripherals and the power consumption could be much higher. Of course, you can drop in a 100Wh battery pack if you wanted as well :)

Another cute feature of the battery board is that it can drive an analog panel meter. Xobs had suggested that it would be neat to embed a retro analog needle meter into the palmrest of the laptop to give a real-time display of power consumption. I thought it was a great idea, so I designed that in. Of course, the analog meter is driven by a DAC on the battery microcontroller, so it can be configured to perform a multitude of useful (or not so useful) read-outs, such as remaining runtime, battery voltage, temperature, the time (represented as an analog value), etc.

Firmware
Forthcoming. Keep an eye on Xobs' blog for the latest progress.

Also, building novena firmware.

uboot magic script:

mkimage -T script -C none -n 'Novena Boot Script' -d boot.txt boot.scr

Software
Once you get Novena running, there are a few tweaks that you might have to make to the software to get it to run. Not all software likes running on Linux on anything other than x86/x64. Others just require software fixes to work around kernel bugs that we haven't fixed yet.

Enigmail
Enigmail (and possibly some other Thudnerbird extensions) explicitly only works for x86 and x64, Linux, Windows, and Darwin. You need to modify install.rdf. If you're using Debian, it's called Icedove.

&lt;em:targetPlatform>Linux_arm-eabi-gcc3&lt;/em:targetPlatform>
 * Install the extension, either from Thunderbird itself, or through "apt-get install enigmail"
 * Edit either ~/.thunderbird/*.default/extensions/{GUID}/install.rdf OR /usr/lib/xul-ext/enigmail/install.rdf
 * Find the lines that contain &lt;em:targetPlatform> (e.g. &lt;em:targetPlatform>Darwin_x86_64-gcc3&lt;/em:targetPlatform>)
 * Add the following line:
 * Save and close the file
 * Restart Thunderbird

PulseAudio
PulseAudio uses a type of scheduling that requires very accurate DMA response. Unfortunately, this is not accurate with the current i.MX6 DMA driver. The workaround is to use time-based scheduling instead.

load-module module-udev-detect tsched=0
 * Edit /etc/pulse/default.pa
 * Locate the line that says "load-module module-udev-detect"
 * Replace it with the following line:
 * Save the file
 * Run "killall pulseaudio"

Booting Novena
See booting novena for details on running the board after building and flashing the novena firmware.

Mainboard
EVT-stage design files. As always, provided as-is, no warranty for fitness -- but particularly worthy of re-iteration since as an EVT design, it is in early stages and I fully expect to be finding and fixing bugs.
 * Schematics
 * Gerbers
 * Altium source
 * STEP 3D file (DVT)
 * STEP 3D file (PVT)

Battery board
EVT-stage design files. As always, provided as-is, no warranty for fitness -- but particularly worthy of re-iteration, since as an EVT design it is in early stages and I fully expect to be finding and fixing bugs.
 * Schematics
 * Gerbers
 * Altium source

DVT-stage design files.
 * STEP

Kernel
Novena uses the stock Linux kernel with few patches. Any patches that might be useful to other projects (such as PCIe or ES8328 audio codec) are being submitted upstream.

The 2D/3D/Vector unit requires its own driver, which is available in source form on Github. Different userspace drivers require different kernel modules, so be sure to check out the branch that corresponds with your driver version.

More Pages
Here on the wiki:

Getting started

 * Using Novena PVT1

Build notes

 * building novena firmware
 * Novena Cloud Image


 * Novena/Debian
 * Novena/DebianBuildProcess
 * Debian Init Update (PVT)


 * Novena/Dual Core

Tech notes

 * Booting novena
 * Novena/Crypto
 * Novena Issue Log
 * Novena DVT Issue Log
 * Novena PVT Issue Log
 * Novena ddr3 notes
 * Novena/Power Management Board
 * Definitive GPIO guide


 * Programming Senoko DVT


 * Novena AFE
 * eDP adapter EVT
 * Hacks, hints, and tricks

Archives

 * Old main page