Difference between revisions of "Novena Main Page"

From Studio Kousagi Wiki
Jump to: navigation, search
(Hardware Design Source)
(Gentoo Distro)
 
(62 intermediate revisions by 11 users not shown)
Line 1: Line 1:
 
Novena is an open hardware and F/OSS-friendly computing platform.  
 
Novena is an open hardware and F/OSS-friendly computing platform.  
 +
 +
If you are interested in buying one, you may order one at [https://www.crowdsupply.com/kosagi/novena-open-laptop crowd supply].
  
 
Real-time updates and announcements can be tracked by following [https://twitter.com/intent/user?screen_name=novenakosagi @novenakosagi] on twitter.
 
Real-time updates and announcements can be tracked by following [https://twitter.com/intent/user?screen_name=novenakosagi @novenakosagi] on twitter.
  
'''Alpha evaluators''': Please visit [[Using Novena PVT1]] for more info.
+
'''Potential contributors''': Please ping us in IRC (irc.oftc.net #kosagi) if you try to open an account, for some reason the new wikimedia install isn't forwarding your requests on to the administrator.
  
=Hardware=
+
==Hardware==
 
http://bunniefoo.com/novena/pvt1_release/novena_pvt1e_top_thumb.jpg
 
http://bunniefoo.com/novena/pvt1_release/novena_pvt1e_top_thumb.jpg
 
<br>
 
<br>
 
More photos: [[Novena PVT Hardware Photos]]
 
More photos: [[Novena PVT Hardware Photos]]
  
==Mainboard==
+
===Mainboard===
 
Features:
 
Features:
  
Line 16: Line 18:
 
**Quad-core Cortex A9 CPU with NEON FPU @ 1.2 GHz
 
**Quad-core Cortex A9 CPU with NEON FPU @ 1.2 GHz
 
**Vivante GC2000 OpenGL ES2.0 GPU, 200Mtri/s, 1Gpix/s (*)
 
**Vivante GC2000 OpenGL ES2.0 GPU, 200Mtri/s, 1Gpix/s (*)
**NDA-free datasheet and programming manual
+
**NDA-free datasheet [http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&tab=Documentation_Tab&pspll=1&SelectedAsset=Documentation&ProdMetaId=PID/DC/i.MX6Q&fromPSP=true&assetLockedForNavigation=true&componentId=2&leftNavCode=1&pageSize=25&Documentation=Documentation/00610Ksd1nd%60%60Data%20Sheets&fpsp=1&linkline=Data%20Sheets] and programming manual
  
 
*Internal memory:
 
*Internal memory:
Line 45: Line 47:
 
**USB OTG — enables laptop to spoof/fuzz ethernet, serial, etc. over USB via gadget interface to other USB hosts
 
**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
 
**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.
+
**Spartan-6 CSG324-packaged FPGA (PVT uses LX45: 43k logic cells, 6.8k slices, 54.5k ff, 401kb distributed RAM, 58 DSP48A, 2088kb block RAM) — 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
 
**High-speed I/O expansion header
  
 
Items marked with an asterisk (*) require a closed-source firmware blob, but the system is functional and bootable without the blob.  
 
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 [http://bunniestudios.com bunnie's blog] for updates and notes. You can also discuss at the [http://www.kosagi.com/blog/forums/forum/novena/ forum].
+
Keep an eye on [http://bunniestudios.com bunnie's blog] for updates and notes. You can also discuss at the [http://www.kosagi.com/forums/ forum].
 +
 
 +
====Power characteristics====
 +
 
 +
Novena ought to be able to enter a low-power suspend mode, and resume it quickly.  [[Novena power characterization]].
  
==Battery board==
+
===Battery board===
 
http://bunniefoo.com/novena/pvt1_release/senoko_dvt1_thumb.jpg
 
http://bunniefoo.com/novena/pvt1_release/senoko_dvt1_thumb.jpg
 
<br>
 
<br>
Line 85: Line 91:
 
** Has DAC output to drive an analog panel meter
 
** Has DAC output to drive an analog panel meter
  
==eDP Adapter==
+
===eDP Adapter===
 
http://bunniefoo.com/novena/pvt1_release/edp_evt2_thumb.jpg
 
http://bunniefoo.com/novena/pvt1_release/edp_evt2_thumb.jpg
 
<br>
 
<br>
Line 111: Line 117:
 
In addition, there is a custom flex cable that goes between the Novena mainboard and the eDP adapter. It's designed to handle the power requirements of the LCD, as well as manage signal integrity at high data rates.
 
In addition, there is a custom flex cable that goes between the Novena mainboard and the eDP adapter. It's designed to handle the power requirements of the LCD, as well as manage signal integrity at high data rates.
  
==Hardware Design Source==
+
===Hardware Design Source===
 
Please see [[Novena PVT Design Source]] for electronic CAD.
 
Please see [[Novena PVT Design Source]] for electronic CAD.
  
Mechanical CAD files are forthcoming, once the design is refined and we've had a chance to annotate and format the designs for distribution.
+
Please see [[Novena Mechanical CAD]] for mechanical CAD.
 +
 
 +
==Firmware==
 +
 
 +
Novena firmware runs Debian, and is capable of being updated from repo.kosagi.io.  This means that packages may be updated by running "apt-get update; apt-get upgrade".
 +
 
 +
Note: the repo key expired, you'll need to update your signing key before this works. Check [[updating novena repo key]] for details.
 +
 
 +
Notable firmware changes may be found at the [[Novena firmware changelog]].
 +
 
 +
===Disk Imaging===
 +
The SD image that is installed on Novenas that ship is a disk image with a shrunken ext4 partition.  To use the disk image, dd it onto an SD card, then resize the third partition to extend to the entire card.  The factory imaging process performs these steps:
 +
 
 +
# dd the image to the card
 +
# use fdisk to delete the third partition, then recreate it using defaults
 +
# use fsck to check the partition
 +
# use resize2fs to enlarge the partition
 +
 
 +
You may instead want to increase partition #2, in order to get hibernation working. For an existing installation see [[IncreasingSwapSize|Increasing Swap Size]]
 +
 
 +
The disk image is available at http://repo.novena.io/novena/images/novena-mmc-disk-r1.img.  It has the following sums:
 +
 
 +
SHA256: 26d368cb4b3aa43e411703f8c659d3e229deacfe75af38c1f82489dd9af80dbb
 +
MD5: 6923a145cbdc75b420408fc2d09ba4f8
 +
RSA: -----BEGIN PGP SIGNATURE-----
 +
      Version: GnuPG v1
 +
     
 +
      iQIcBAABAgAGBQJUl8nFAAoJEKuwFcVr1hraGrIQALG5eMNeIOFdjgO/NLpKowCt
 +
      tup8irrTebgaVW4CacZQa2152XKBHJKu6Um2jCPnP9/WwmjqgKKVi2PjcDj7pb4B
 +
      Ng4eM4fWcMIHQaocPG3eRRYvn78FU4faUBmmoWL67kSf5UzvDE0PKChCKdJxSnM8
 +
      dS2dgGbP4inTO6G3xYXBmd4Pok66Epvv4kETqImNB0HEs2TTym7gB9O8itnHtIP/
 +
      hfKYJaXcr8y5tut+h7UY1/IObGFFvXuCVDKzA9HzaEQ/86wKX3B9u7kOrtz+8+5T
 +
      HOSiRGwyxzffT2fdPyLduMGqqdXwDQvc/U/imKiQOWrmyJ0EfqLN9AV0OqsDofXI
 +
      zNMQu+5MJUdgZN5+IRcKb7C/miOtr/KmKwyR138uGcWxnjtLqbQ552dPknpEgNdI
 +
      14rBi/KYoyhx/op0U2VXbH01goNhFtYSzlZV3gQRy5J578lvn5UlgZCmqtzuWC5r
 +
      s9NPP7U2DxO3Aqpk6TVGFiu2OiAW8xGA+44yjKHueHIuBW7TyJiDgfqgvCH76wGE
 +
      0FRb9c6tg2LOw2r/Rlnpi9Jg30ZPvc5ICX8juv8dwlDGGmdVm8urLaQ2dHPnKnJu
 +
      7YGFyb3OEN47/wTJNMpiDd8sy7pFIVcb/qTZK4W7qmLc8HPEIl4Kjz32j+4z61z0
 +
      zJGnfwjEfimlOp1WgVay
 +
      =KDZm
 +
      -----END PGP SIGNATURE-----
 +
 
 +
===Bootloader===
 +
U-boot is the current factory-default bootloader. Please see [[U-boot PVT Notes]].
 +
 
 +
Most boot files, including the kernel and device tree, are located on the first partition.  This partition is formatted VFAT, and is referred to as the "boot partition".
 +
 
 +
The loader is two-stage.  The first stage is about 40k, and is responsible for initializing DDR3 RAM and loading the second stage from disk.  The second stage is responsible for initializing the rest of the board, loading Linux, and jumping to it.
  
=Firmware=
+
The first stage, called SPL (secondary program loader), lives outside of any partition at 1024 bytes from the start of the disk.  A copy of the SPL is stored on the boot partition, and is called u-boot.spl.  A script is provided to install a new SPL, called novena-install-spl(8).
==Bootloader==
 
u-boot is the current factory-default bootloader. Please see [[U-boot PVT Notes]].
 
  
==Linux OS==
+
The second stage is also located on the boot partition, and is called u-boot.img.  This file is loaded by the SPL.  It contains a baked-in script that loads the correct device tree file, parses the [[EEPROM|Novena/EEPROM]], prunes the device tree as necessary, then jumps to the kernel.  If the user button is held down, then the bootloader waits several seconds for the user to press Control-C on the serial console, and if nothing happens then it boots the recovery kernel.
===Kernel===
+
 
 +
The bootloader loads "zimage" from the boot partition, and pairs it with "novena.dtb".  If booting into recovery, it will load "zimage.recovery" and "novena.recovery.dtb".
 +
 
 +
If the *rootfs_ssd* flag is set in the EEPROM, then the root parameter is set to **PARTUUID=4e6f7653-03**.  If the *rootfs_ssd* flag is not set, or if booting into recovery mode, then the root parameter is set to **PARTUUID=4e6f764d-03**.  This means that you should set your disk up such that the root partition is partition 3 (i.e. /dev/sda3), and set your disk ID correctly.  To set the diskid, run fdisk on the disk, then go into Expert mode ('x'), then:
 +
 
 +
* For MBR partition tables: Change ID ('i') to 0x4e6f7653.
 +
* For GPT partition tables: Change partition UUID ('u'). Note: fdisk wants the UUID in full 8-4-4-4-12 format, so you will want to make up some additional digits, e.g. 4e6f764d-0300-0000-0000-012345678901.
 +
 
 +
===Linux OS===
 +
====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.
 
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.
  
Line 134: Line 194:
 
Those doing GPIO hacking with linux may be interested in the [[Definitive GPIO guide]] for the i.MX6.
 
Those doing GPIO hacking with linux may be interested in the [[Definitive GPIO guide]] for the i.MX6.
  
===Distro===
+
====Debian Distro====
 
Debian is the factory-default distribution, but of course anyone can put their favorite distro on the system.
 
Debian is the factory-default distribution, but of course anyone can put their favorite distro on the system.
  
Quickstart gide on building and initializing a bootable debian image:
+
Quickstart gide on building and initializing a bootable Debian image:
*[[Debian Init Update (PVT)]].
+
*[[Novena Image script]], using the script that is used for the factory image
 +
*[[Debian jessie bootstrap|Jessie bootstrapping]], instructions on putting a newer Jessie image on
 +
*[[Debian Init Update (PVT)|Another bootstrapping guide]], which is similar to all of the others
 +
 
 +
The following Debian packages are available:
 +
*[[Novena packaging overview]]
 +
*[[pulseaudio-novena]] -- Novena-specific pulseaudio scripts
 +
*[[novena-disable-ssp]] -- program to disable SSP on Bluetooth
 +
*[[u-boot-novena]] -- local, lightly-patched copy of U-Boot
 +
*[[Novena linux-kernel]] -- local copy of the patched Linux kernel
 +
*[[novena-firstrun]] -- set of scripts that get run on first boot
 +
*[[irqbalance]] -- smooths out system performance
 +
*[[xorg-novena]] -- Configuration files for Novena
 +
*[[xserver-xorg-video-armada]] -- Accelerated X server
 +
*[[novena-eeprom]] -- Editor for the configuration EEPROM
 +
*[[novena-eeprom-gui]] -- GUI editor for the configuration EEPROM
 +
*[[novena-usb-hub]] -- Program to manipulate USB hib status
 +
*[[firmware-senoko]] -- Firmware blob / updater for Senoko battery board
 +
*[[novena-heirloom]] -- Support packages for the heirloom model
 +
 
 +
For more in-depth discussions on Debian and other notes, along with historical methods, please refer to these pages:
 +
*[[Novena/Debian History|Debian History]], discussing early plans to get Debian onto Novena
 +
*[[Novena/Embedian Build|Embedian build]], with instructions on how to cross-compile Debian
 +
*[[Novena/Debian Wheezy Bootstrap|Wheezy bootstrapping]], discussing using debootstrap to create an image
 +
 
 +
====Gentoo Distro====
  
For more in-depth discussions on Debian and other notes, please refer to these pages:
+
A prebuilt Gentoo disk image [https://github.com/sakaki-/gentoo-on-novena is available on Github], thanks to forum user Sakaki.  This image includes a newer kernel, plus all of the packages repackaged for Gentoo.
*[[Novena/Debian]]
 
*[[Novena/DebianBuildProcess]]
 
  
==Dual Core Variant==
+
===Dual Core Variant===
 
Novena's base design works with the i.MX6DL. However, it does require some firmware changes. Notably, the bootloader is significantly different because there is much less SRAM to run from for setting things up. Also, the pinmuxes are different, so that issue has to be addressed in the device tree. See [[Novena/Dual Core]] for notes on this configuration.
 
Novena's base design works with the i.MX6DL. However, it does require some firmware changes. Notably, the bootloader is significantly different because there is much less SRAM to run from for setting things up. Also, the pinmuxes are different, so that issue has to be addressed in the device tree. See [[Novena/Dual Core]] for notes on this configuration.
  
==Legacy==
+
==Software==
For those who want to cross-compile an OE-based image, please see [[building novena firmware]]
 
 
 
=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.
 
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.
Line 156: Line 236:
 
Please see [[Novena Software]] for more information.
 
Please see [[Novena Software]] for more information.
  
=More Pages=
+
===Software projects===
 +
 
 +
While Novena tries to be standard, it nevertheless has some platform-specific software projects that are necessary to take advantage of its unique hardware.
 +
 
 +
[[novena-eeprom]]: Command-line editor for the onboard EEPROM
 +
 
 +
[[novena-usb-hub]]: Manage the power status of each of the onboard USB hub's ports
 +
 
 +
===Future software projects===
 +
 
 +
[[novena-eeprom-gui]]: Graphical viewer/editor to inspect the onboard EEPROM
 +
 
 +
[[senoko-manager]]: Graphical manager for Senoko battery board
 +
 
 +
[[senoko-programmer]]: Firmware updater for Senoko battery board
 +
 
 +
=User Guides=
 +
Note: you probably want to install libi2c-dev if you're going to compile the novena configuration tools, we forgot to include it in the base image.
 +
 
 +
[[GPBB User Guide]]: The on-ramp to hardware hacking on Novena.
 +
 
 +
[http://novena-guide.readthedocs.org/en/PVT2/ Mainboard User Guide] (thanks to Bryan Newbold for starting that one!)
 +
 
 +
[[Desktop User Guide]]
 +
 
 +
[[Laptop User Guide]]
 +
 
 +
[[Novena Heirloom User Guide]]
 +
 
 +
[[FPGA getting started]]: To get started on programming the FPGA
 +
 
 +
==More Pages==
 
===Getting started===
 
===Getting started===
 
*[[Using Novena PVT1]]
 
*[[Using Novena PVT1]]
Line 169: Line 280:
 
*[[Novena/Power Management Board]]
 
*[[Novena/Power Management Board]]
 
*[[Definitive GPIO guide]]
 
*[[Definitive GPIO guide]]
 +
*[[Novena as JTAG adapter]]
  
 
*[[Programming Senoko DVT]]
 
*[[Programming Senoko DVT]]
Line 174: Line 286:
 
*[[Novena AFE]]
 
*[[Novena AFE]]
 
*[[eDP adapter EVT]]
 
*[[eDP adapter EVT]]
 +
 +
*[[Novena PVT2 ECO List]]
 +
*[[Senoko PVT ECO List]]
 +
*[[Front panel DVT ECO List]]
 +
*[[Novena GPBB DVT ECO List]]
 +
 +
*[[Novena headers to linux GPIO mappings]]
  
 
===Because I can't remember all those damn command lines===
 
===Because I can't remember all those damn command lines===
 
*[[Hacks, hints, and tricks]]
 
*[[Hacks, hints, and tricks]]
 +
*[[Novena Dogfood Setup]]
 +
*[[Heirloom BT pairing setup]]
 +
*[[Novena as a USB keyboard]]
 +
 +
=== Some diagnostics ===
 +
*[[System boot time messages]]
 +
*[[eDP Display Controller diagnostic: it6251-dump-dptx]]
  
 
===Archives===
 
===Archives===
 
*[[Old main page]]
 
*[[Old main page]]
 +
 +
==Shuttleworth Flash Grant==
 +
bunnie is a recipient of a 2014 [https://www.shuttleworthfoundation.org/fellowship/fellows/grantees/ Shuttleworth Flash Grant]!
 +
 +
He will be using the grant money to further development of the Novena open hardware platform and to help grow the community around it.
 +
 +
<center>
 +
http://bunniefoo.com/bunnie/Shuttleworth-Funded-480px.jpg
 +
</center>

Latest revision as of 09:22, 5 October 2016

Novena is an open hardware and F/OSS-friendly computing platform.

If you are interested in buying one, you may order one at crowd supply.

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

Potential contributors: Please ping us in IRC (irc.oftc.net #kosagi) if you try to open an account, for some reason the new wikimedia install isn't forwarding your requests on to the administrator.

Hardware

novena_pvt1e_top_thumb.jpg
More photos: Novena PVT Hardware Photos

Mainboard

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 [1] 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 with USB2.0 side-channel for a display-side camera
    • Resistive touchscreen controller (note: captouch displays typically come with an embedded controller)
    • 1.1W, 8-ohm internal speaker connectors
    • 2x USB2.0 internal connectors for keyboard and mouse/trackpad
    • Digital microphone (optional, not populated by default)
    • 3-axis accelerometer
    • 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 (PVT uses LX45: 43k logic cells, 6.8k slices, 54.5k ff, 401kb distributed RAM, 58 DSP48A, 2088kb block RAM) — 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

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.

Power characteristics

Novena ought to be able to enter a low-power suspend mode, and resume it quickly. Novena power characterization.

Battery board

senoko_dvt1_thumb.jpg
More photos: Novena PVT Hardware Photos

Battery management functions are implemented in an optional daughtercard.

Features:

  • SATA-style connector to route power and control signals to the main board
  • Works with battery packs used by most RC enthusiasts
    • 2S1P to 4S1P
    • Cheap and easy to buy
    • User can "pick their capacity" -- the battery life isn't fixed by design, it's up to the user
  • Classic Molex disk connector for battery connector
    • Requires adapter cable to the RC battery pack
  • Fast-charge capability
    • Rates in excess of 4A
    • Charge a 45Wh 3S1P pack in ~1 hour
    • Active cell balancing
  • Learns your battery pack
    • Over a few charge/discharge cycles, the controller determines the actual capacity of the pack
    • Tracks capacity degradation over time
    • Optimizes charging to reduce wear and tear on packs
    • Computes an accurate estimate of remaining battery capacity
  • Statistics reporting
    • SMBus standard power interface
    • Stats such as remaining capacity, charging rate, current discharge rate, voltage, etc. available
  • STM32 master controller
    • Runs ChibiOS
    • Enables autonomous operation when CPU board is powered off
    • Reprogrammable by host CPU, but requires a physical button press to enable programming so as to prevent surreptitious malware insertion
    • Has DAC output to drive an analog panel meter

eDP Adapter

edp_evt2_thumb.jpg
More photos: Novena PVT Hardware Photos

Novena natively supports a dual-channel LVDS interface for LCDs. However, today's LCD panels are migrating to an eDP-style interface. To bridge this gap, there is the eDP adapter board.

Features:

  • IT6251 chipset
  • DisplayPort 1.1a Tx supporting HBR (2.7Gbps) and RBR (1.62 Gbps)
  • Input pixel rate up to 165MHz
  • 24-bit color
  • Breakouts for touchscreen and USB
  • On-board switching regulators for low power operation
  • Made to work with Chimei Innolux N133HSE
    • 13.3" diagonal
    • 1920x1080, 166 ppi; 1.3W typ cell power, white pattern
    • IPS, 180 degree viewing angle in V/H
    • 350 cd/m2 brightness (3.5W typ backlight power @ max brightness)
    • 700:1 typical contrast ratio
    • 14ms Tr, 11ms Tf response times

Note to viewers: total power is cell power + backlight power. Cell power is just the power required to flip the LCD elements, not inclusive of backlight.

In addition, there is a custom flex cable that goes between the Novena mainboard and the eDP adapter. It's designed to handle the power requirements of the LCD, as well as manage signal integrity at high data rates.

Hardware Design Source

Please see Novena PVT Design Source for electronic CAD.

Please see Novena Mechanical CAD for mechanical CAD.

Firmware

Novena firmware runs Debian, and is capable of being updated from repo.kosagi.io. This means that packages may be updated by running "apt-get update; apt-get upgrade".

Note: the repo key expired, you'll need to update your signing key before this works. Check updating novena repo key for details.

Notable firmware changes may be found at the Novena firmware changelog.

Disk Imaging

The SD image that is installed on Novenas that ship is a disk image with a shrunken ext4 partition. To use the disk image, dd it onto an SD card, then resize the third partition to extend to the entire card. The factory imaging process performs these steps:

  1. dd the image to the card
  2. use fdisk to delete the third partition, then recreate it using defaults
  3. use fsck to check the partition
  4. use resize2fs to enlarge the partition

You may instead want to increase partition #2, in order to get hibernation working. For an existing installation see Increasing Swap Size

The disk image is available at http://repo.novena.io/novena/images/novena-mmc-disk-r1.img. It has the following sums:

SHA256: 26d368cb4b3aa43e411703f8c659d3e229deacfe75af38c1f82489dd9af80dbb
MD5: 6923a145cbdc75b420408fc2d09ba4f8
RSA: -----BEGIN PGP SIGNATURE-----
     Version: GnuPG v1
     
     iQIcBAABAgAGBQJUl8nFAAoJEKuwFcVr1hraGrIQALG5eMNeIOFdjgO/NLpKowCt
     tup8irrTebgaVW4CacZQa2152XKBHJKu6Um2jCPnP9/WwmjqgKKVi2PjcDj7pb4B
     Ng4eM4fWcMIHQaocPG3eRRYvn78FU4faUBmmoWL67kSf5UzvDE0PKChCKdJxSnM8
     dS2dgGbP4inTO6G3xYXBmd4Pok66Epvv4kETqImNB0HEs2TTym7gB9O8itnHtIP/
     hfKYJaXcr8y5tut+h7UY1/IObGFFvXuCVDKzA9HzaEQ/86wKX3B9u7kOrtz+8+5T
     HOSiRGwyxzffT2fdPyLduMGqqdXwDQvc/U/imKiQOWrmyJ0EfqLN9AV0OqsDofXI
     zNMQu+5MJUdgZN5+IRcKb7C/miOtr/KmKwyR138uGcWxnjtLqbQ552dPknpEgNdI
     14rBi/KYoyhx/op0U2VXbH01goNhFtYSzlZV3gQRy5J578lvn5UlgZCmqtzuWC5r
     s9NPP7U2DxO3Aqpk6TVGFiu2OiAW8xGA+44yjKHueHIuBW7TyJiDgfqgvCH76wGE
     0FRb9c6tg2LOw2r/Rlnpi9Jg30ZPvc5ICX8juv8dwlDGGmdVm8urLaQ2dHPnKnJu
     7YGFyb3OEN47/wTJNMpiDd8sy7pFIVcb/qTZK4W7qmLc8HPEIl4Kjz32j+4z61z0
     zJGnfwjEfimlOp1WgVay
     =KDZm
     -----END PGP SIGNATURE-----

Bootloader

U-boot is the current factory-default bootloader. Please see U-boot PVT Notes.

Most boot files, including the kernel and device tree, are located on the first partition. This partition is formatted VFAT, and is referred to as the "boot partition".

The loader is two-stage. The first stage is about 40k, and is responsible for initializing DDR3 RAM and loading the second stage from disk. The second stage is responsible for initializing the rest of the board, loading Linux, and jumping to it.

The first stage, called SPL (secondary program loader), lives outside of any partition at 1024 bytes from the start of the disk. A copy of the SPL is stored on the boot partition, and is called u-boot.spl. A script is provided to install a new SPL, called novena-install-spl(8).

The second stage is also located on the boot partition, and is called u-boot.img. This file is loaded by the SPL. It contains a baked-in script that loads the correct device tree file, parses the Novena/EEPROM, prunes the device tree as necessary, then jumps to the kernel. If the user button is held down, then the bootloader waits several seconds for the user to press Control-C on the serial console, and if nothing happens then it boots the recovery kernel.

The bootloader loads "zimage" from the boot partition, and pairs it with "novena.dtb". If booting into recovery, it will load "zimage.recovery" and "novena.recovery.dtb".

If the *rootfs_ssd* flag is set in the EEPROM, then the root parameter is set to **PARTUUID=4e6f7653-03**. If the *rootfs_ssd* flag is not set, or if booting into recovery mode, then the root parameter is set to **PARTUUID=4e6f764d-03**. This means that you should set your disk up such that the root partition is partition 3 (i.e. /dev/sda3), and set your disk ID correctly. To set the diskid, run fdisk on the disk, then go into Expert mode ('x'), then:

  • For MBR partition tables: Change ID ('i') to 0x4e6f7653.
  • For GPT partition tables: Change partition UUID ('u'). Note: fdisk wants the UUID in full 8-4-4-4-12 format, so you will want to make up some additional digits, e.g. 4e6f764d-0300-0000-0000-012345678901.

Linux OS

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.

The git repo for the cutting edge linux that we're working on is at:

https://github.com/xobs/novena-linux

Make sure you switch to the desired branch, e.g. 3.14-rc4 etc.

Those doing GPIO hacking with linux may be interested in the Definitive GPIO guide for the i.MX6.

Debian Distro

Debian is the factory-default distribution, but of course anyone can put their favorite distro on the system.

Quickstart gide on building and initializing a bootable Debian image:

The following Debian packages are available:

For more in-depth discussions on Debian and other notes, along with historical methods, please refer to these pages:

Gentoo Distro

A prebuilt Gentoo disk image is available on Github, thanks to forum user Sakaki. This image includes a newer kernel, plus all of the packages repackaged for Gentoo.

Dual Core Variant

Novena's base design works with the i.MX6DL. However, it does require some firmware changes. Notably, the bootloader is significantly different because there is much less SRAM to run from for setting things up. Also, the pinmuxes are different, so that issue has to be addressed in the device tree. See Novena/Dual Core for notes on this configuration.

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.

Please see Novena Software for more information.

Software projects

While Novena tries to be standard, it nevertheless has some platform-specific software projects that are necessary to take advantage of its unique hardware.

novena-eeprom: Command-line editor for the onboard EEPROM

novena-usb-hub: Manage the power status of each of the onboard USB hub's ports

Future software projects

novena-eeprom-gui: Graphical viewer/editor to inspect the onboard EEPROM

senoko-manager: Graphical manager for Senoko battery board

senoko-programmer: Firmware updater for Senoko battery board

User Guides

Note: you probably want to install libi2c-dev if you're going to compile the novena configuration tools, we forgot to include it in the base image.

GPBB User Guide: The on-ramp to hardware hacking on Novena.

Mainboard User Guide (thanks to Bryan Newbold for starting that one!)

Desktop User Guide

Laptop User Guide

Novena Heirloom User Guide

FPGA getting started: To get started on programming the FPGA

More Pages

Getting started

Hardware Tech notes

Because I can't remember all those damn command lines

Some diagnostics

Archives

Shuttleworth Flash Grant

bunnie is a recipient of a 2014 Shuttleworth Flash Grant!

He will be using the grant money to further development of the Novena open hardware platform and to help grow the community around it.

Shuttleworth-Funded-480px.jpg