If you prefer watching a video instead on this process, please click here.
The installation procedure involves 2 major steps:
Before any installation begins, it is important that you ensure your board has the latest firmware installed. If you do not have the latest firmware, please see the Firmware Update section at the end of this blog post for the latest updates and installation instructions.
NOTE: Only the Ethernet port on the front panel is active.
$ sudo add-apt-repository ppa:linaro-maintainers/tools
$ sudo apt-get update
$ sudo apt-get install linaro-image-tools
'/dev/sdX'
If you see similar partitions on your USB drive, the USB image has been created successfully.
Connect Juno to the PC through UART0 (top UART on the back panel) and monitor the output through a serial terminal client like Putty. Although not necessary on first boot, it is always a good idea to clear flash memory of the device when replacing the kernel and file systems used by Juno. Make sure your device is connected through the serial port and powered on. Do not boot the device just yet. On the cmd> prompt, run the following commands:
Cmd> flash
Flash> areas
Base Area Size Blocks Block Size
---- --------- ------ ----------
0x08000000 65280K 255 256K
0x0BFC0000 256K 4 64K
Flash> eraserange 0x0BFC0000
Erasing Flash
.
Flash> exit
Cmd> reboot
The system will now be rebooted, and after a short time, you be presented by a boot countdown from 10, thus:
The default boot selection will start in 10 seconds
When you see this prompt, please press the enter key to interrupt the countdown. You will then be presented with a menu, thus:
[1] Linux from NOR Flash
[2] Shell
[3] Boot Manager
Start:
Depending on the configuration of your board, the menu option called “Boot Manager” may not be option 3. In this example, we can see that the Boot Menu is indeed option “3”, so we choose it by pressing the “3” key and pressing enter. You will then be presented with a boot menu, thus:
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT Path
[5] Return to main menu choice:
The first thing we need to do is to delete all of the existing Boot Device Entries. Deleting a Boot Device Entry is achieved by pressing the 3 key and pressing enter:
Delete entry:
In our example, using the default config from the first time you boot the board, there is only 1 Boot Device Entry: “Linux from NOR Flash”. You must delete this entry by pressing the 1 key and pressing enter. After this, you will be returned to the Boot Menu where you should continue by deleting all Boot Device Entries that are configured.
Once you have done this, you should continue by creating a new Boot Device Entry by selecting option 1 from from the Boot Menu. After selecting the menu option by pressing the 1 key followed by enter, you will see a list of available Boot Devices, thus:
[5] Return to main menu choice: 1
[1] Firmware Volume (0 MB)
[2] Firmware Volume (0 MB)
[3] NOR Flash (63 MB)
[4] VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)
[5] VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)
[6] PXE on MAC Address: 00:02:F7:00:57:DD
[7] TFTP on MAC Address: 00:02:F7:00:57:DD
Select the Boot Device:
As you will see in the example above, there is no partition named “boot” available to the user. At this point, the user must press the ESC key to exit the “Select the Boot Device” option and return to the Boot Menu. From the Boot Menu, please select option 1 again. The example below shows how this looked on our test system, your results may differ:
[4] boot (131 MB)
[5] sdcard (13585 MB)
[6] VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)
[7] VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)
[8] PXE on MAC Address: 00:02:F7:00:57:DD
[9] TFTP on MAC Address: 00:02:F7:00:57:DD
As you will see, the menu option "boot" has now appeared, allowing us to select the partition named “boot” on the USB drive. In the example above, the partition named “boot” is option 4. Your system may show a different option for the partition named boot on your USB drive. Please examine the menu and choose the appropriate option.
Once you have chosen the Boot Device, you will be prompted for the configuration of that Boot Device.
The first question will ask for the file path of the kernel, thus:
File path of the EFI Application or the kernel:
When configuring a system to boot Android, you enter the file path of the kernel as “kernel” without the quotes and followed by the enter key, for this is the filename of the kernel in the boot partition on the USB drive.
Next you will be prompted if the kernel has Flattened Device Tree support:
Has FDT support? [y/n]
The answer is yes, so please press the “y” key followed by enter. Next you will be asked if you wish to configure an “initrd” for your system:
Add an initrd: [y/n]
The answer is yes, so please press the “y” key followed by enter. Next you will be asked for the file path of the initrd on your USB drive:
File path of the initrd:
The file is called “ramdisk.img”, so please type “ramdisk.img” without the quotes, followed by the enter key.
After this you will be asked to supply the arguments required to boot the kernel:
Arguments to pass to the binary:
Please note, copy and paste does not work well over the serial terminal. The user is advised to type the commandline arguments by hand, character at a time, followed by the enter key. The commandline used is shown below:
console=ttyAMA0,115200 earlyprintk=pl011,0x7ff80000 root=/dev/ram0 verbose debug
Finally, after entering the command line, the final question is simply asking for a title that will appear in the Boot Menu:
Description for this new Entry:
You may enter a simple string of alphanumeric characters use to represent the name of this Boot Device. On our example system, we chose to type the string “Android on USB”, without the quotes, followed by pressing the enter key.
After entering the description string, you will then be returned to the boot menu:
It may take a long time, perhaps over a minute for UEFI to save the Boot Device Entry.
After you have configured the Boot Device Entry, next you must configure the Flattened Device Tree (FDT) path. You do this by selecting the option “Update FDT path” by pressing the 4 key and pressing enter. As with the Add Boot Device Entry option, next you will be presented with a list of Boot Devices that can host the FDT file. On our test system, the list looked like this:
Choose the option that corresponds to the partition named “boot” on your system. In the example above, this is option 4. Enter the option number and press the enter key. You will then be prompted for the file path for the FDT file:
File path of the FDT blob:
At this prompt, type the filename “juno.dtb” and press the enter key. The system may take some time to save the configuration. After which, you will be returned to the Boot Menu:
[5] Return to main menu
At this point, we have completed our configuration and we can return to the main menu by selecting option 5 “Return to main menu”. To select option 5, press the 5 key and press enter.
Once you are back at the main menu, you will see that the selection of Boot Devices has now changed. On our test system, the selection looked like this:
[1] Android on USB
Where option 1, “Android on USB” was the Boot Device Entry that we created by following the instructions above.
You should now choose this option to boot from your USB drive. When booting, you will see output similar to this:
Start: 1
The Android boot process should now start. Connect Juno to an HD tv screen through an HDMI cable using the HDMI port closest to the hardware reset buttons. You will be able to the see the android boot flash screen on your tv:
The configuration of the Juno Development Platform board is determined by a set of files stored on a flash memory device on the board. The flash memory can be accessed via a USB-B socket on the rear panel of the board. When connected to a host computer, the flash memory will appear as a USB mass storage device with a FAT16 filesystem. The files in this filesystem are edited to control the configuration of the board.
The configuration of the Juno Development Platform board can be returned to factory default by extracting the Juno board recovery image onto the flash memory device, replacing any files already in the flash memory.
To install firmware images that you have built yourself, the procedure is the same except that you will overwrite the contents of the /SOFTWARE/ directory with your own images.To update the MCC firmware only, the procedure is the same except that the MCCfirmware update bundle will contain only a subset of the files contained in the full recovery image.
To carry out a system recovery, update the MCC firmware, or install your own custom firmware images, follow these steps:
1. Connect a serial terminal to the top 9-pin UART0 connector on the rear panel (115200 baud, 8, n, 1).
2. Connect a USB cable between the USB-B connector on the rear panel and a USBport of your host computer.
3. Connect the 12 volt power supply to the board.
The serial terminal will show the command prompt Cmd>
4. At the Cmd> prompt on the serial terminal, issue the command usb_on
Cmd> usb_on
The configuration flash memory should now be visible on the host computer as a mass storage device.
5. Save to the host PC any of the existing files in the configuration flash memory that you wish to retain for future use.
6. If you wish to update one or more of the firmware components then skip to step 7. Otherwise, for a full system recovery, format the configuration flash memory (FAT16).
7. Extract the board recovery image (board_recovery_image_0.7.5.zip) to the root directory of the configuration flash memory, preserving the directory structure.
8. If you are performing a system recovery or installing an update from ARM then skip to step 9. Otherwise if you wish to install firmware images that you have built yourself then delete the bl1.bin and fip.bin from the /SOFTWARE/ directory in the configuration flash memory, and copy your own bl1.bin and fip.bin images into that directory to replace them.
9. Safely eject the mass storage device, giving it time to write the files to the internal storage.
10. Press the ON/OFF button on the rear panel of the board and wait for reprogramming to complete.
I got #2 to work by running it as "sudo". I did this because of the last line in the traceback, see below, showed that it was trying to do a "sudo" in the subprocess. It worked so now I am moving to the next steps.
=======================================================================
Traceback (most recent call last):
File "/usr/bin/linaro-android-media-create", line 170, in <module>
with partition_mounted(boot_partition, BOOT_DISK):
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/usr/lib/pymodules/python2.7/linaro_image_tools/media_create/partitions.py", line 209, in partition_mounted
cmd_runner.run(subprocess_args, as_root=True).wait()
File "/usr/lib/pymodules/python2.7/linaro_image_tools/cmd_runner.py", line 100, in wait
raise SubcommandNonZeroReturnValue(self._my_args, returncode)
linaro_image_tools.cmd_runner.SubcommandNonZeroReturnValue: Sub process "['sudo', '-E', 'mount', '/dev/sdb1', '/tmp/tmptNFdKh/boot-disc']" returned a non-zero value: 32