This lesson deploys the Smart Meeting demo with App Portal in one shot: a single
app-portal install meetinghandles “download DEB + fetch models + install dependencies +
deploy resources + start the service” — no more manual compiling, packaging, or pushing 9GB of models.Prerequisite: App Portal is already installed on the board (see section 1.2 of this lesson)
andapp-portal listshowsmeeting.
Objectives
- Deploy the meeting demo with
app-portal install meeting - Manage it with
app-portal status/start/stop/restart - Understand the demo’s two ports:
3000(Vue frontend) and8081(backend WebSocket) - Tell whether the license is active (check if 8081 is listening)
1. Prepare the Environment
1.1 Hardware
| Item | Requirement |
|---|---|
| Board | RK3588 + RK182X, writable /userdata (models are ~9GB) |
| Display | Optional; the web UI is accessed from a browser |
| Microphone/Speaker | Needed if you want live transcription |
1.2 Deploy App Portal First (one-time only)
The following lessons all install apps through App Portal, so spend two minutes installing it now. Run on the PC:
# First connect the board over adb (USB or TCP)
adb connect <board-IP>:5555
adb devices # confirm "<board-IP>:5555 device"
cd <SDK>/applications/app_portal
./deploy.sh <board-IP>:5555
The script automatically: builds the app-portal and app-portal-web DEBs → pushes them to the board → installs with dpkg -i.
A successful run ends like:
Setting up app-portal-web (0.5.0) ...
==> DEB: applications/app_portal/deb/app-portal_0.5.0_arm64.deb
==> Deployment completed
Catalog: /etc/app-portal/catalog.yaml
Runtime: app-portal runtime-version
Apps: app-portal list
Web: http://<board-IP>:18090/
On the board, run the self-check:
sudo app-portal check # catalog: /etc/app-portal/catalog.yaml / valid: True
sudo app-portal runtime-version # e.g. 1.1.0 (must match the model version)
sudo app-portal list # shows meeting / clawchips / ai-hub / multistream-* etc.
Actual list output — 8 apps:
multistream-detect install=apt-deb
clawchips install=pip-whl
ai-media-base install=apt-deb
llama-rknn3-server install=apt-deb
ai-hub install=apt-deb
multistream-event install=apt-deb
multistream-vlm install=apt-deb
meeting install=apt-deb
Once installed, open the web console: http://<board-IP>:18090/ (service name app-portal-web).
Why deploy this first: it covers the whole pipeline
“download → verify → install dependencies → deploy resources → install service → start”.
Installing meeting in this lesson and clawchips in Lesson 4 is then just oneapp-portal install <app-id>each.
1.3 Disk Space
df -h /userdata
The meeting app downloads a DEB plus models (~9GB extracted); keep ≥15GB free on /userdata.
2. Task Overview
Runtime layout of the meeting demo:
Browser ──:3000──> Vue frontend (python3 -m http.server serving static pages)
│ WebSocket
▼
rk_meeting_demo backend (:8081)
├─ rkasr ASR speech recognition (streaming)
├─ rktextsum meeting summarization
├─ rkrag retrieval augmentation
└─ rkvqe audio enhancement
- The frontend is just static pages; it shows “loading model xx%” on open
- The progress bar’s endpoint is decided by 8081: backend up → 100%; backend crashed → stuck at 99% forever
- The backend requires a
.liclicense for each module; without one it exits immediately (see FAQ Q3)
3. Steps
Step 1: Install
sudo app-portal install meeting
App Portal will:
- Select the published release matching the current RKNN3 Runtime (e.g.
1.1.0) - Download
meeting_<ver>_arm64.deband the model resources from the cloud drive (with sha256 verification and resumable downloads) - Install the DEB via
apt/dpkgand deploy resources to/userdata/rk_meeting_demo/ - Install and start the systemd service
The first install downloads several GB of models; time depends on bandwidth.
If interrupted, re-running resumes the download. Add--forceto reinstall the same version.
Step 2: Check Status
sudo app-portal status meeting
Step 3: Start / Stop
sudo app-portal start meeting
sudo app-portal stop meeting
sudo app-portal restart meeting
You can also use the script in the install directory:
cd /userdata/rk_meeting_demo && ./ai_meeting.sh start|stop|restart.
Step 4: Open the Web UI
In a browser, open:
http://<board-IP>:3000/
The progress bar reaches 100% once the page loads (provided 8081 is listening).
Step 5: License (the dividing line for real transcription)
cd /userdata/rk_meeting_demo
sudo ./auth.sh -u <rkauth-account> -p <password>
sudo app-portal restart meeting
Success indicator:
ss -ltn | grep 8081 # 8081 present = backend is truly running
4. Verification
| Item | Criterion | Notes |
|---|---|---|
| Install complete | app-portal status meeting shows the installed version |
|
| Frontend | curl -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/ → 200 |
measured 200 |
| Port | ss -ltn shows 0.0.0.0:3000 |
|
| Backend | ss -ltn shows 0.0.0.0:8081, and pgrep -af rk_meeting_demo has a process |
requires license |
| Artifacts | /userdata/rk_meeting_demo/ (contains rkasr/ rktextsum/ rkrag/ rkvqe/ rockx/ vue_board/) |
Without a license the “normal state” is: 3000 opens, 8081 not listening, progress bar stuck at 99%.
That is not an installation failure — the license is simply not active.
5. FAQ
Q1: app-portal install meeting reports download/verification failure?
The cloud-drive settings live in artifact_sources of
applications/app_portal/configs/apps/80-meeting.yaml (endpoint/share_code/password).
First confirm the board can reach the drive domain:
curl -I https://meta.zbox.filez.com
Downloads resume; re-run sudo app-portal install meeting to continue.
Q2: Out of disk space?
df -h /userdata
sudo du -sh /userdata/app_portal/cache/* # download cache
Uninstall unused apps (app-portal uninstall <app>) or clear the cache, then reinstall.
Q3: The web UI opens but the progress bar stays at 99%?
The rk_meeting_demo backend is not up. Check in order:
ss -ltn | grep 8081 # missing → backend down
pgrep -af rk_meeting_demo # any process?
cd /userdata/rk_meeting_demo && sudo ./meeting_run.sh # run in foreground, read the error
The two most common causes:
- No license: run
./auth.sh -u <account> -p <password>, then restart; - License file missing: check whether
.licfiles exist under/userdata/rk_meeting_demo/rkasr/key/.
Old source-built binaries have one more pitfall: without a license the
rkasr_initcleanup path
performs a double free causing SIGSEGV (not a single log line appears).
The official DEB installed by App Portal fixes this — do not use your own build.
Q4: Port 8081 taken by another app?
The meeting backend hardcodes 8081. If another app that uses 8081 is installed
(e.g. clawchips’ rkclaw-server), stop the other one first:
sudo app-portal status clawchips
sudo app-portal stop clawchips
sudo app-portal restart meeting
Q5: How to do a clean reinstall?
sudo app-portal uninstall meeting
sudo app-portal install meeting
Model resources are large; before uninstalling/cleaning, confirm nothing else references them.
Summary
- The meeting demo is deployed with one command:
app-portal install meeting - Distinguish the two ports: 3000 frontend (opens right away) vs 8081 backend (up = truly working)
- “Progress bar stuck at 99%” almost equals “backend not running”, and the most common cause is a missing license
- Using the official App Portal DEB avoids the double-free crash of the source-built version