-
Notifications
You must be signed in to change notification settings - Fork 11
/
setup-guide-mk1c.txt
169 lines (138 loc) · 8.27 KB
/
setup-guide-mk1c.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
## Last modified: 2023/11/15 11:12:08
# DISCLAIMER: Oxford Nanopore Technologies is in no way endorsing or supporting
# this method of installation of MinKNOW, or the devices that it is installed on.
# Also, please be fore warned that by following this set up guide neither the authors
# or Oxford Nanopore Technology (ONT) are liable for any hardware/consumable damage
# or data loss that may arise.
# UPDATE 2023-11-15: these notes have been updated to support the latest updates
# in the ONT software stack, namely the introduction of dorado as the new production
# basecaller. This means that it is now possible to get a fully working install for
# sequencing with live basecalling on Jetson Orin based devices. This has been tested
# and confirmed working on an Nvidia Jetson Orin AGX.
# IMPORTANT: this guide installs ONT software from the M1kc repository, moving forward
# this will become the supported "software stack" to install on arm-based Nvidia Jetson
# devices. This replaces the original instructions which were based on the MinIT software.
# Notes: before running through these set up notes there are several steps that
# require user action, namely: setting up the correct user/password, creating
# a partition for the NVMe drive (if present), and editing the configuration
# files to include the correct directory structure. We will over time look
# to automate much of this, but just be warned for now that there are steps
# where you will need to get your hands dirty. ;)
# 0. pre-setup
# fresh install of Nvidia Jetson JetPack
# create user: minit with pw: minit
# TODO - determine whether this is still a requirement. For now it is working so will leave
# it as it is.
# 1. get everything together before we start
# ensure we start in /home/minit dir
cd ~/
# clone repo
git clone https://github.com/sirselim/jetson_nanopore_sequencing.git
cd ./jetson_nanopore_sequencing
# 2. full system update and upgrade
# shouldn't take long with latest JetPack
sudo apt update
sudo apt upgrade
# 3. add nanopore repo to system and update
# copy the apt sources file from this repo to system to ensure pointing at mk1c repository
sudo cp nanoporetech.sources.list /etc/apt/sources.list.d/
# add key
wget -O- https://mirror.oxfordnanoportal.com/apt/ont-repo.pub | sudo apt-key add -
# update repos
sudo apt update
# 4. install ont packages
# this step is pulling from the latest ONT repo with Mk1c packages
# if you are building from cached debs replace this step with 'dpkg -i *.deb'
# the 'manual' way, these packages will pull in other required depends
sudo apt install minknow-core-minion-1c-offline ont-bream4-mk1c \
ont-dorado-server-for-mk1c ont-dorado-models-for-mk1c \
ont-configuration-customer-mk1c ont-kingfisher-ui-mk1c \
ont-vbz-hdf-plugin ont-minion1c-fpga
# 5. edit the minknow conf files to change the location of data and enable GPU basecalling
# this can be done manually by using a text editor such as nano, this assumes you know what you want to edit:
#cd /opt/ont/minknow/conf
#sudo nano user_conf
#sudo nano app_conf
# in app_conf you want to ensure that "gpu_calling" is set to true
# 6. prevent boot into MinKNOW UI
# there is a script that will start the Kingfisher UI upon log in, we can stop this to get a full desktop environment
sudo sed -i '1 s/^/#/' /etc/xprofile
# to revert this if you want to essentially have a mk1c and not access the desktop
# sudo sed -i '1 s/#//' /etc/xprofile
# remember to uncomment (remove the #) the above line to run it in your terminal
# 7. need to overwrite the values that identify the new device as a MinION Mk1c
# TODO - this is a horrible hack currently! At this stage we're hacking the Mk1c software to make it more "universal" for ARM devices.
# hopefully ONT will eventually release a mainline ARM64 version of the software that isn't tied to a specific device
# edit /etc/oxfordnanopore/configs/identity.config
# there is an error that this file can't be edited due to having an immutable flag, fix this:
sudo chattr -i /etc/oxfordnanopore/configs/identity.config
# now edit required values
sudo sed -i -e 's/Serial=.*/Serial=NONE/g' -e 's/ProductCode=.*/ProductCode=NONE/g' -e 's/Class=.*/Class=NONE/g' -e 's/Build=.*/Build=NONE/g' /etc/oxfordnanopore/configs/identity.config
# Note: you can replace the Serial value of "NONE" with a value of your choice here if desired
# (i.e. "My-XavNX", this is the value that will be used to name the device in ONT tools such as MinKNOW
# we need to do something similar in the app_conf file:
# edit /opt/ont/minknow/conf/app_conf
sudo sed -i -e 's/"device_type":.*/"device_type": "MinION",/' -e 's/"host_type":.*/"host_type": "PC",/' /opt/ont/minknow/conf/app_conf
# 8. Correct the MinKNOW UI zoom/scaling and remove the on screen keyboard
# The Mk1c software is designed to run on small 7inch touch screens, so there is a zoom factor that scales the UI and it looks
# bad on bigger screens. The software will also include a pop-up keyboard for touch screens by default. We turn these off.
sudo sed -i -e 's/--keyboard //g' -e 's/--zoom-factor 2/--zoom-factor 1/g' /usr/share/applications/minknow.desktop
# Note: if you are using a touch screen and would like the on screen keyboard then use the below:
# sudo sed -i -e 's/--zoom-factor 2/--zoom-factor 1/g' /usr/share/applications/minknow.desktop
# remember to uncomment (remove the #) the above line to run it in your terminal
# 9. set the correct firmware link
# because we aren't running the system id package things need a manual adjustment
# look for the firmware that is installed
ls -lhart /opt/ont/minknow/conf/firmware/
# should see something like `MinGrid_fx3_1_2_7_ONT.img`
# now check the usb_firmware.toml file
cat /opt/ont/minknow/conf/usb_firmware.toml
# notice that the toml is linking to firmware that we don't have, change
# this to reflect the firmware that is installed
# should look something like the below:
# minion = "firmware/MinGrid_fx3_1_2_7_ONT.img"
# 10. copy minknow.service and guppyd.service across
## minknow.service
# copy minknow.service for systemd set up and restart the service
# TODO - check this is still required, and check location of arm systemd files
# on latest x86_x64 Linux builds minknow.service is located in /lib/systemd/system/
# it likely doesn't matter, either seem to be respected
# stop the service if it already exists
sudo systemctl stop minknow.service
# copy across the service file
sudo cp ./systemd_files/minknow.service /lib/systemd/system/
# enable the service (if it hasn't been)
sudo systemctl enable minknow.service
# start the service
sudo systemctl start minknow.service
# check
systemctl status minknow.service
#
# WARNING: with recent releases of MinKNOW there have been issues with directory permissions, and the Mk1b device not being detected
# a quick and dirty fix for this is to change the user and group from 'minit' to 'root'. If you have these issues you can run the below:
sudo sed -i -e 's/User=.*/User=root/g' -e 's/Group=.*/Group=root/g' /lib/systemd/system/minknow.service
# if you ever want to set this back to minit that's easy as well:
sudo sed -i -e 's/User=.*/User=minit/g' -e 's/Group=.*/Group=minit/g' /lib/systemd/system/minknow.service
# IMPORTANT: remember to always restart the service after modifying any of these systemd files
#
## guppyd.service
# stop the service if it is already present
sudo systemctl stop guppyd.service
# copy guppyd.service to required location
sudo cp ./systemd_files/guppyd.service /lib/systemd/system/
# enable the service (if it hasn't been)
sudo systemctl enable guppyd.service
# start the service
sudo systemctl start guppyd.service
# check
systemctl status guppyd.service
# NOTE: the guppyd.service file contained in this repository is set with 8GB GPUs in mind, i.e. the Jetson Xavier NX
# these memory values can be edited to suit the GPU specs of a particular card/device, i.e. for the Xavier AGX a user
# might modify values to something like 24GB or even 32GB
# 11. you may require a system reboot at this stage. This is not always required, but for some people it sometimes fixes "niggles".
# TODO - confirm if this is required. I don't believe this to be required, but as a final hail mary it could be an option.
## optional steps
# install jetson-stats to allow nice hardware monitoring
# https://github.com/rbonghi/jetson_stats
sudo -H pip install -U jetson-stats
# needs a reboot/logout and then can use jtop