a513190d81f3a1ff0772e0c4af7acf6db2562421
[AGL/documentation.git] /
1 ---
2 title: Instrument Cluster (IC-IVI with Container isolation)
3 ---
4
5 # Build and Boot AGL Instrument Cluster demo image (IC-IVI with Container isolation)
6
7
8 This document describe how to build AGL instrument cluster with
9 container integration.
10
11 ## 1. Select Image type and target board
12
13 AGL IC container integration has various type.  Developer need to choice
14 which integration type.  Those type show in table1. 
15
16 **Table 1. Integration type.**
17
18 | No. | Type name | Detail of type | Required storage (SD card) size - board. | Build time AMD R9 5900HX /64GByte RAM | Required storage size-build. |  |
19 |:---:|:---:|:---:|:---:|:---:|:---:|:---:|
20 | 1 | Simple container host | This integration aim to core package definition for container host using LXC.  This integration is not include demo package. This integration aim to define starting point for downstream product development. | 1G Byte |  | 150GByte | Console only. |
21 | 2a | Instrument cluster with simple demo IVI install to one partition. | This integration aim to get most simple integration with demo feature.  This container runtime and management is constructed with LXC package only.  On the other hand, it has limitation for supported use case.  This integration support two demo guest run in one board (instrument cluster guest and momi IVI guest). This integration aim to learn drm lease and LXC container by developer. | 2GByte | 2h | 300GByte | ![](images/image1.png) |
22 | 3a | Instrument cluster with demo IVI install to one by one partition. | This integration aim to get simple integration with demo feature.  This container runtime and management is constructed with container management daemon with liblxc.  This integration will improve to support many embedded use case.  This integration support two demo guest run in one board (instrument cluster guest and momi IVI guest). This integration aim to learn and develop AGL IC container integration by developer. | 16GByte (Including pre-allocated partition for 3 guests.) | 2h | 300GByte | ![](images/image1.png) |
23 | 3b | Instrument cluster with four demo IVI install to one by one partition. | This integration aim to get full demo integration with AGL demo IVI.  This integration is extend from 3a integration.  This integration support instrument cluster guest and four IVI guest (momi, qt, flutter, html5).   This integration aim to use AGL demonstration in each event by developer. | 16GByte | 3a+6h | 600GByte | ![](images/image2.png) |
24
25 We recommend to choice 3a.  It can extend to 3b.
26
27 AGL IC container integration supported two board.  Those board show in
28 table2.
29
30 **Table2. Supported board.**
31
32 | Board type | Support integration type | status |
33 |:---:|:---:|:---:|
34 | AGL RefHW | 1,2a,3a,3b | Tested |
35 | R-CarH3 Starter Kit with Kingfisher board | 1,2a,3a,3b | Not tested. |
36 | R-CarM3 Starter Kit with Kingfisher board | 1,2a,3a,3b | EOL Board. Not tested. |
37 | R-CarH3 Starter Kit | 1,2a | End of Supported in latest release. |
38 | R-CarM3 Starter Kit | 1,2a | EOL Board. End of  support in latest release. |
39 | Raspberry Pi4 (4G or 8G) | 1,2a,3a,3b | Tested. |
40
41
42 We recommend to choice AGL RefHW or Raspberry Pi4 (4G or 8G).
43
44 **Typical Hardware Set is shown in Appendix.1. **
45
46 ## 2. Setup build environment
47
48 Build environment for AGL IC container integration is same as AGL other
49 profile build environment. 
50
51 ### 1st step:
52 Please read [[Build Process Overview]](https://docs.automotivelinux.org/en/master/#01_Getting_Started/02_Building_AGL_Image/01_Build_Process_Overview/) in AGL doc.
53
54 ### 2nd step:
55 Please read [[Preparing Your Build Host]](https://docs.automotivelinux.org/en/master/#01_Getting_Started/02_Building_AGL_Image/02_Preparing_Your_Build_Host/) in AGL doc.
56
57 ### 3rd step: 
58 Define Your Top-Level Directory.
59
60 ```bash
61 $ export AGL_TOP=$HOME/AGL
62 $ mkdir -p $AGL_TOP
63 ```
64
65 ### 4th step: Download the repo Tool and Set Permissions
66
67 If your environment already install google repo, please skip this step.
68
69 ```bash
70 $ mkdir -p $HOME/bin
71 $ export PATH=$HOME/bin:$PATH
72 $ curl https://storage.googleapis.com/git-repo-downloads/repo > $HOME/bin/repo
73 $ chmod a+x $HOME/bin/repo
74 ```
75
76 ### 5th step: Setup git
77
78 If your environment already setup user information for git, please skip this step.
79
80 ```bash
81 $ git config \--global user.email "you@example.com"
82 $ git config \--global user.name "Your Name"
83 ```
84
85 ### 6th step: Download the AGL Source Files
86
87 #### Standard procedure:  Use latest point of the quillback release.
88
89 ```bash
90 $ cd $AGL_TOP
91 $ mkdir quillback
92 $ export AGL_TOP=$HOME/AGL/quillback
93 $ cd $AGL_TOP
94 $ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo -b quillback
95 $ repo sync
96 ```
97
98 #### Alternative procedure:  Use latest release of the quillback release.
99
100 Check a this [release note page](https://wiki.automotivelinux.org/agl-distro/release-notes#latest_oldstable_release).  It describe repo command to download latest release point.
101
102 Example
103 ```bash
104 $ repo init -b quillback -m quillback_17.1.1.xml -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
105 ```
106
107 When you want to use latest release of the quillback release, please replace repo command from the standard procedure to this.
108
109 ### 7th step: Downloading Proprietary Drivers  (AGL RefHW and R-Car H3/M3 with Kingfisher board only procedure)
110
111 If your board is Raspberry Pi4, please skip this step.
112
113 #### 7-1: Downloading Proprietary Drivers from [Renesas-automotive-products](https://www.renesas.com/us/en/products/automotive-products/automotive-system-chips-socs/r-car-h3-m3-documents-software).
114
115 In case of Quirky Quillback, please download this.
116
117 ![](images/image3.png)
118
119 #### 7-2: To check the files to download.
120 ```bash
121 $ grep -rn ZIP_.= $AGL_TOP/meta-agl/meta-agl-bsp/meta-rcar-gen3/scripts/setup_mm_packages.sh
122 $ export XDG_DOWNLOAD_DIR=$HOME/Downloads
123 ```
124
125 #### 7-3: Download and copy Proprietary Drivers files (Run commands at downloaded files directory).
126
127 ```bash
128 $ cp R-Car_Gen3_Series_Evaluation_Software_Package_* $XDG_DOWNLOAD_DIR/
129 $ chmod a+rw $XDG_DOWNLOAD_DIR/*.zip
130 ```
131
132 ## 3. Configure to target board and build.
133
134 ### 1st step:  Run the aglsetup.sh Script.
135
136 ```bash
137 $ cd $AGL_TOP
138 ```
139
140 When your board is AGL RefHW.
141
142 ```bash
143 $ source meta-agl/scripts/aglsetup.sh -f -m h3ulcb -b build-ic-refhw agl-ic-container agl-refhw-h3
144 ```
145
146 When your board is R- CarH3 Starter Kit with Kingfisher board.
147
148 ```bash
149 $ source meta-agl/scripts/aglsetup.sh -f -m h3ulcb-kf -b build-ic-h3kf agl-ic-container
150 ```
151
152 When your board is Raspberry Pi 4
153 ```bash
154 $ source meta-agl/scripts/aglsetup.sh -f -m raspberrypi4 -b build-ic-rpi4 agl-ic-container
155 ```
156
157 ### 2nd step: Build target image.
158
159 In this time, you can build 1,2a and 3a.  If you want to build 3b,
160 please do extra step in next section.
161
162 When you choice integration type 1.
163
164 ```bash
165 $ bitbake lxc-host-image-minimal
166 ```
167
168 When you choice integration type 2a.
169
170 ```bash
171 $ bitbake agl-cluster-demo-lxc-host
172 ```
173
174 When you choice integration type 3a.
175
176 ```bash
177 $ bitbake agl-instrument-cluster-container-demo
178 ```
179
180 ## 4. Extra step for type 3b build.
181
182 This extra step can select 4a or 4b.  When you want to build AGL demo
183 IVI container guest in myself, please select 4a work flow.  When you
184 want to create AGL IC container demo quicly, please select 4b work flow.
185
186 Typically 4a step require long build time about 6h.  When you want to
187 build AGL Ref HW/ SK+ Kinfgisher software, you can\'t select select 4b
188 work flow that depend to Renesas propriety license limitation.
189
190 ### 4a. Extra step for type 3b build myself.
191
192 #### 1st step: Configure 2nd build tree.
193
194 We recommend to open new terminal to do this extra section.
195
196 ```bash
197 $ export AGL_TOP=$HOME/AGL/master
198 $ cd $AGL_TOP
199 ```
200
201 When your board is AGL RefHW.
202
203 ```bash
204 $ source meta-agl/scripts/aglsetup.sh -f -m h3ulcb -b build-ivi-refhw agl-container-guest-demo agl-demo agl-refhw-h3
205 ```
206
207 When your board is R- CarH3 Starter Kit with Kingfisher board.
208
209 ```bash
210 $ source meta-agl/scripts/aglsetup.sh -f -m h3ulcb-kf -b build-ivi-h3kf agl-container-guest-demo agl-demo
211 ```
212
213 When your board is Raspberry Pi 4
214 ```bash
215 $ source meta-agl/scripts/aglsetup.sh -f -m raspberrypi4 -b build-ivi-rpi4 agl-container-guest-demo agl-demo
216 ```
217
218 #### 2nd step: Build target images.
219
220 Type 3b integration need to build 3 image, these image are
221 agl-ivi-demo-qt, agl-ivi-demo-flutter and agl-ivi-demo-html5.
222
223 ```bash
224 $ bitbake agl-ivi-demo-qt
225 $ bitbake agl-ivi-demo-flutter
226 $ bitbake agl-ivi-demo-html5
227 ```
228
229 #### 3rd step: Set deploy path of AGL IVI Demo to IC side config.
230
231 Type 3b integration refer to IVI pre build image.  Please set IVI side
232 deploy directory in ic side local.conf (or site.conf).
233
234 At $AGL_TOP/build-ic-XXXX/conf/local.conf
235
236 Add to
237 ```bash
238 OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/path/to/deploy/"
239 ```
240
241 ex.  When your board is AGL RefHW and your home directory is "/home/user/".
242 ```bash
243 OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-refhw/tmp/deploy"
244 ```
245
246 ex.  When your board is R- CarH3 Starter Kit with Kingfisher board and your home directory is "/home/user/".
247
248 ```bash
249 OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-h3kf/tmp/deploy"
250 ```
251
252 ex.  When your board is Raspberry Pi 4 and your home directory is "/home/user/".
253
254 ```bash
255 OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-rpi4/tmp/deploy"
256 ```
257
258 #### 4th step: Build all in one image (3b).
259
260 Back to terminal for ic build.
261
262 ```bash
263 $ bitbake agl-instrument-cluster-container-demo
264 ```
265
266 ### 4b. Extra step for type 3b using pre build image.
267
268 The 4b can select Raspberry Pi 4 board only, this limitation depend to
269 Renesas propriety license limitation.
270
271 #### 1st step: Download stable prebuild image from AGL site.
272
273 Download IVI guest images from this link.
274
275 [[Prebuild AGL Demo IVI container images for Raspberry Pi
276 4.]](https://drive.google.com/file/d/1uXel0K9_IK7SAEc8msKyXvNWhFRWgF4C/view?usp=sharing)
277
278 Extract download tar.bz2 archive to any directory.
279
280 ```bash
281 $ cd /path/to/directory/
282 $ tar xvJf /path/to/download/agl-demo-ivi-container-guest-raspberrypi4-64.tar.bz2
283 ```
284
285 #### 2nd step: Set deploy path of AGL IVI Demo to IC side config.
286
287 Set extracted directory using OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR in
288 local.conf (or site.conf).
289
290 ```bash
291 OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR="/path/to/directory/prebuild/"
292 ```
293
294 #### 3rd step: Build all in one image (3b).
295
296 Back to terminal for ic build.
297
298 ```bash
299 $ bitbake agl-instrument-cluster-container-demo
300 ```
301
302 ## 5. Write image to SD card.
303
304 The 3a and 3b image is constructed by wic image, that include partition
305 table and each partition data into one image file.
306
307 In default setting, that wic image is compressed xz.  When that wic
308 image write to SD card, you need to use xzcat ant dd command in build
309 PC.
310
311 ```bash
312 $ sudo bash -c "xzcat /path/to/image/directory/agl-instrument-cluster-container-demo-XXXXX.rootfs.wic.xz | dd of=/dev/sdXXX bs=128M"
313 ```
314
315 **If you are missing to set SD card device "/dev/sdXXX", it cause
316 SSD/HDD data break (only logical, not physical).**
317
318 For example;
319
320 A /dev/sda is SSD for your PC.  A /dev/sdb is SD card.  You should use
321 /dev/sdb, must not use /dev/sda.
322
323 When your PC has direct SD card interface not a use card reader, your SD
324 card device is /dev/mmcblkX may be.
325
326 ## 6. Power on.
327
328 ## 7. How to use container exchange UI.
329
330 ### 7a. Momi Web
331
332 The Momi web is a web interface for container exchange.  When you want
333 to use Momi web, you must connect network between board and
334 PC/Tablet/Phone.
335
336 **The Momi web is completely demo feature, that open many security hole.
337  You shall not use out of standalone demo.**
338
339 #### 1st step: Check IP address in your board.
340
341 After booting, you check IP address in your board.
342
343 ```bash
344 root@raspberrypi4-64:\~# ifconfig\
345 eth0      Link encap:Ethernet  HWaddr E4:XX:YY:ZZ:WW:VV\
346            inet addr:192.168.10.128  Bcast:192.168.10.255
347   Mask:255.255.255.0
348 ```
349
350 In this case, this board set IP address by 192.168.10.128.
351
352 #### 2nd step: Connect to board using web browser.
353
354 Open "[http://a.b.c.d:8080](http://a.b.c.d:8080)".  When
355 a board is set IP address 192.168.10.128, you open
356 "[http://192.168.10.128:8080](http://192.168.10.128:8080)".
357
358 When you success to connect to board, your web browser show these web
359 UI.
360
361 #### PC View
362
363 ![](images/image4.png)
364
365 #### Mobile View
366
367 ![](images/image5.png)
368
369 ### 7b. Keyboard Interface
370
371 Please refer to Appendix 3.
372
373 ## Frequently Asked Questions
374
375 | Questions | Answer |
376 |:---|:---|
377 | Why not show map in default screen of Momi IVI. | When you want show map, you need extra step.  Please fallow [this page](../../06_Component_Documentation/Demo_Application/01_Momi_Navi.md).|
378
379
380 ## Appendix.1.  Typical Hardware set.
381
382 ### AGL Reference Hardware.
383
384 ![](images/image6.png)
385
386
387 | **No** | **Name** | **num** | **Where to buy** |
388 |---|---|---|---|
389 | 1 | AGL Ref HW | 1 | Ask to Panasonic. [Contact about purchase](https://confluence.automotivelinux.org/display/RHSA/Contact+about+purchase) |
390 | 2 | Touch Display (Full HD) | 1 | [https://amzn.asia/d/7URb6r8](https://amzn.asia/d/7URb6r8) |
391 | 3 | Cluster Display (1920x720 or Full HD) | 1 | [https://amzn.asia/d/bGircST](https://amzn.asia/d/bGircST) |
392 | 4 | HDMI Cable (Need to check how to connect this cable to Touch/Cluster Display, that depend to display side connector) | 2 | [https://amzn.asia/d/auuhnTK](https://amzn.asia/d/auuhnTK) |
393 | 5 | Optional: Special Keyboard | 1 | [https://amzn.asia/d/dZdbp9X](https://amzn.asia/d/dZdbp9X) |
394
395 ### Raspberry PI4
396
397 ![](images/image7.png)
398
399 | **No** | **Name** | **num** | **Where to buy** |
400 |---|---|---|---|
401 | 1 | Raspberry PI 4(4G or 8G) with Power supply | 1 | [https://akizukidenshi.com/catalog/g/gM-14778/](https://akizukidenshi.com/catalog/g/gM-14778/) [https://akizukidenshi.com/catalog/g/gM-16293/](https://akizukidenshi.com/catalog/g/gM-16293/) |
402 | 2 | Touch Display (Full HD) | 1 | [https://amzn.asia/d/7URb6r8](https://amzn.asia/d/7URb6r8) |
403 | 3 | Cluster Display (1920x720 or Full HD) | 1 | [https://amzn.asia/d/bGircST](https://amzn.asia/d/bGircST) |
404 | 4 | HDMI Cable (Need to check how to connect this cable to Touch/Cluster Display, that depend to display side connector) | 2 | [https://akizukidenshi.com/catalog/g/gC-15002/](https://akizukidenshi.com/catalog/g/gC-15002/) |
405 | 5 | Optional: Special Keyboard | 1 | [https://amzn.asia/d/dZdbp9X](https://amzn.asia/d/dZdbp9X) |
406
407
408 ## Appendix.2. Cluster with IVI Containers View.
409
410 ### Qt IVI
411
412 ![](images/image8.jpeg)
413
414 ### Flutter IVI
415
416 ![](images/image9.jpeg)
417
418 ### HTML5 IVI
419
420 ![](images/image10.jpeg)
421
422 ### Momi IVI
423
424 ![](images/image11.jpeg)
425
426 ## Appendix 3. How to configure Special Keyboard.
427
428 ### How to get configuration tool.
429
430 This description is targeting to [this type of special
431 keyboard](https://amzn.asia/d/dUxGK5Q). 
432
433 The usb-12key-kbd-prog is unofficial community tool of this key board
434 that is possible to use linux.  Official windows tool is possible to get
435 official site.
436
437 Usage of usb-12key-kbd-prog is please refer to upstream site.
438
439 Upstream:
440 [https://github.com/NeoCat/usb-12key-kbd-prog](https://github.com/NeoCat/usb-12key-kbd-prog)
441
442 ### Key Map.
443 | Key | Container |
444 |---|---|
445 | A | Momi IVI |
446 | C | Crash IVI guest |
447 | D | Qt IVI |
448 | G | Flutter IVI |
449 | H | HTML5 IVI |
450
451 # Reference webpages
452  1. [eLinux](https://elinux.org/R-Car/AGL)
453  1. [Kingfisher Board](https://elinux.org/R-Car/Boards/Kingfisher)
454  1. [R-Car M3SK](https://elinux.org/R-Car/Boards/M3SK#Flashing_firmware)
455  1. [agl reference machines](https://docs.automotivelinux.org/en/master/#02_hardware_support/01_Supported_Hardware_Overview/)
456  1. [AGL Tech Day Presenation](https://static.sched.com/hosted_files/agltechday2022/3b/agl-techday-202204.pdf)
457  1. [Build AGL Image](https://docs.automotivelinux.org/en/master/#01_Getting_Started/02_Building_AGL_Image/0_Build_Process_Overview/)
458  1. [Building for Supported Renesas Boards](https://docs.automotivelinux.org/en/master/#01_Getting_Started/02_Building_AGL_Image/09_Building_for_Supported_Renesas_Boards/)