Manufacturing:X2 Ubuntu Configuration for MicroSD programming
Programming of Micro SD cards for X2 using Ubuntu Linux
MicroSD programming
Setup programming stations for MicroSD programming
Basic Install
Install VMplayer
Use latest current version (V15). Link is old
https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/7_0
- Launch VMware
- Check use VMware Player in free non-comercial mode (enter an email address)
Create Ubuntu Virtual Machine
Use latest current version. Link is old
Download the latest Ubuntu version Ubuntu 18.04 with LTS(long term support) can be downloaded from the link below:
http://www.ubuntu.com/download/desktop
Open VMware player and click on "Create a new virtual machine" to open the "New virtual machine wizard"
- Browse for the .iso image of Ubuntu and click next:
- Full Name: ubuntu
- User name: ubuntu
- password: none (the word, not blank)
- Click Next
- Use default Virtual Machine name: Ubuntu 64-bit
- Click Next
- Maximum disk size (30GB recommended)
- Select Split virtual disk into multiple files
after that the Ubuntu Linux install will start.
- Click Next
- Click Finish
System Configuration Update for new scripts Oct 31 2018
Login
After installation has finished start the virtual machine by double clicking on Ubuntu 64-Bit
Log into the system ubuntu/none
Open a Terminal (search for it and pin to the desktop)
Setup
Install scripts
The latest scripts are in the downloads section of AC (Idrive Manufacturing >SDcard Deployment Scripts (Mark 103118)
Three shell scripts are required (idrive_card_deployer.sh, idrive_setup_sdcard.sh, check_if_card_read_only.sh) and they should be placed in /usr/local/bin
copy the 3 scripts to /usr/local/bin and make the executable (use sudo because the location is system protected)
- sudo cp idrive_card_deployer.sh /usr/local/bin (password)
- sudo cp idrive_setup_sdcard.sh /usr/local/bin (password)
- sudo cp check_if_card_read_only.sh /usr/local/bin (password)
- cd /usr/local/bin
- sudo chmod 775 idrive_card_deployer.sh
- sudo chmod 775 idrive_setup_sdcard.sh
- sudo chmod 775 check_if_card_read_only.sh
Setup Desktop Icon
Copy the idrive.ico (Icon file) to /usr/local/bin
- sudo cp idrive.ico /usr/local/bin (password)
Copy the MicroSD_OS_Deployment.desktop file to (Desktop Icon) to /home/ubuntu/Desktop
- cp MicroSD_OS_Deployment.desktop /home/ubuntu/Desktop (sudo not needed)
Stage the frimware, filesystem and settings.db files
OLD (up to FW 25.4)
Copy firmware image to the /home/ubuntu/Documents/SD_home directory (Example Ltib-x2-032116.tar.gz)
::cp Ltib-x2-032116.tar.gz /home/ubuntu/Documents/SD_home
New (FW 30.4 and up (Hard Float))
Copy firmware archive to the /home/ubuntu/Documents/SD_home directory (firmware-x2.tar.gz)
Copy filesystem archive to the /home/ubuntu/Documents/SD_home directory (rootfs.tar.gz)
Copy SETTINGS_DB to the /home/ubuntu/Documents/SD_home directory (settings.db)
Enable comand permissions with SUDO
Add entries to SUDO so that the scripts have permission to run the individual commands
- sudo visudo (editor for sudo so you can disable the password requirements to run mkfs.ext4, tar, umount, sfdisk ) add the following lines:
- %ubuntu ALL=(ALL:ALL) NOPASSWD: /bin/tar
- %ubuntu ALL=(ALL:ALL) NOPASSWD: /bin/umount
- %ubuntu ALL=(ALL:ALL) NOPASSWD: /bin/kill
- %ubuntu ALL=(ALL:ALL) NOPASSWD:/sbin/mkfs.ext4
- %ubuntu ALL=(ALL:ALL) NOPASSWD:/sbin/sfdisk
- %ubuntu ALL=(ALL:ALL) NOPASSWD:/usr/local/bin/idrive_card_deployer.sh
- %ubuntu ALL=(ALL:ALL) NOPASSWD:/usr/local/bin/idrive_setup_sdcard.sh
- %ubuntu ALL=(ALL:ALL) NOPASSWD:/usr/local/bin/check_if_card_read_only.sh
Run the script
The first time the scripts are run the check for system updates. This may make the first run much longer that the following runs.
The only script you execute is idrive_card_deployer.sh . this can be done from the command line or by clicking on the X2_MicroSD_010417 icon on the desktop.
Script Variables
idrive_card_deployer.sh can be edited and set the following default variables:
- DEPLOY_DEVICES=”” #default devices, for example “sdb sdc sdd sde”
- FILESYSTEM_ARCHIVE=”” #default path to filesystem archive (/home/ubuntu/Documents/SD_home/roofs.tar.gz)
- FIRMWARE_ARCHIVE=”” #default path to firmware archive (/home/ubuntu/Documents/SD_home/firmware-x2.tar.gz)
- SETTINGS_DB=”” #default path to settings DB (/home/ubuntu/Documents/SD_home/settings.db)
- DEPLOY_MODE=”” #formatting mode, “verify” = full or “simple” = quick
The script can be executed with (or without) parameters, you can pass: devices, OS image path, formatting mode.
Also by executing the script without parameter and no default device configured, a list of all device will be displayed so you can easy find the “target”. If you set only the DEPLOY_MODE and FILESYSTEM_ARCHIVE you can run the script “./idrive_card_deployer.sh sdc”, it’s easier when you create one card and not know all the time how the Linux OS attaches the device (see attached pics).
Results
Written to a log file in /home/ubuntu/Documents/SD_home/logs
Success output
<--------------------------------------------------------------------------------------> CARD(s) STATUS:
card [sdb] : [DONE] ALL DONE
<-------------- DONE [1/1] (when all is done, this script will auto-exit) -------------->
Failure output
<--------------------------------------------------------------------------------------> CARD(s) STATUS:
card [sdb] : [ERROR][CARDISBAD/READONLY] see log [/home/ubuntu/Documents/SD_home/logs//sdb-deploylog-Mon-Jan--9-11:44:57-PST-2017.log] for details
<-------------- DONE [1/1] (when all is done, this script will auto-exit) -------------->
Install Updates : System>Details>Overview
Add suppport for Exfat filesystem (64GB cards)
- sudo add-apt-repository -y ppa:relan/exfat
- sudo apt-get update -qq
- sudo apt-get install exfat-utils
Double click the X2 MicroSD Programming Icon
Still waiting for cards… 1min50sec for 1 card
Wait for the "Cards are done!" message.
Partitioning SD Cards in Linux
- dmesg (display kernel messages after SD card is plugged in order to find your device path - probably /dev/sdc )
- sudo fdisk /dev/sdc
Command(m for help): p (print the partition table)
Command(m for help): n (add a new partition)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (….): [ENTER]
Last sector, +sectors or +size{K,M,G} (….): [ENTER]
Command(m for help): p (print the partition table...just check)
Command(m for help): w (write table to disk and exit)
This is all, now you can go and hit “Eject” to disconnect the device
Helpful Utilities
apt-get install mc (Midnight Commander)
sudo su - -c mc