# Lingmou Product User Manual (Enterprise)

<a href="/灵眸产品使用说明.docx" target="_blank">Download *Lingmou Product User Manual Enterprise*.docx (same bundle as zh)</a>


### Scan the QR code to install Rokid AI Enterprise

![Rokid AI Enterprise QR](../../../assets/RokidAI企业版二维码.png)

**On the Enterprise login screen, request account credentials from your sales contact.**





### Glasses-side scrcpy helper

Runs **scrcpy** against the first **190…** adb serial it finds (typically Glasses):

```bash
#!/bin/bash
# scrcpy_auto.sh

# ANSI colors
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
PURPLE='\033[0;35m'
NC='\033[0m'
BOLD='\033[1m'

START_TIME=$(date +%s)
COUNTER=0

DEVICE=$(adb devices | grep -E '^190[0-9a-zA-Z]+\s+device' | head -1 | awk '{print $1}')

if [ -z "$DEVICE" ]; then
    echo -e "${RED}Error: No matching device${NC}"
    exit 1
fi

  echo -e "${GREEN}     Device: $DEVICE${NC}     "
  echo -e "${YELLOW}${BOLD}======================================="

scrcpy -s $DEVICE 
```



### Phone-side scrcpy helper

Picks the first **non-190** adb device—useful for tethering phones:

```bash
#!/bin/bash

RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
PURPLE='\033[0;35m'
NC='\033[0m'
BOLD='\033[1m'

START_TIME=$(date +%s)
COUNTER=0

DEVICE=$(adb devices \
  | grep -Ev '^190[0-9a-zA-Z:]*\s+device' \
  | grep 'device$' \
  | head -1 \
  | awk '{print $1}')


if [ -z "$DEVICE" ]; then
    echo -e "${RED}Error: No matching device${NC}"
    exit 1
fi

  echo -e "${GREEN}     Device: $DEVICE${NC}     "
  echo -e "${YELLOW}${BOLD}======================================="

scrcpy -s $DEVICE 
```

### Reboot glasses over adb

```bash
#!/bin/bash

RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
PURPLE='\033[0;35m'
NC='\033[0m'
BOLD='\033[1m'

START_TIME=$(date +%s)
COUNTER=0

DEVICE=$(adb devices | grep -E '^190[0-9a-zA-Z]+\s+device' | head -1 | awk '{print $1}')

if [ -z "$DEVICE" ]; then
    echo -e "${RED}Error: No matching device${NC}"
    exit 1
fi

  echo -e "${GREEN}     Reboot: $DEVICE${NC}     "
  echo -e "${YELLOW}${BOLD}======================================="

adb -s $DEVICE  reboot
```



### Glasses CPU / memory monitor loop

```bash
#!/bin/bash
# system_monitor_simple.sh

RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
PURPLE='\033[0;35m'
NC='\033[0m'
BOLD='\033[1m'

START_TIME=$(date +%s)
COUNTER=0

while true; do
  DEVICE=$(adb devices | grep -E '^190[0-9a-zA-Z]+\s+device' | head -1 | awk '{print $1}')
  if [ -z "$DEVICE" ]; then
    DEVICE=$(adb devices | grep -E '^[0-9a-zA-Z:]+\s+device' | head -1 | awk '{print $1}')
  fi

  if [ -z "$DEVICE" ]; then
    echo -e "${RED}Error: No matching device${NC}"
    exit 1
  fi

  TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

  COUNTER=$((COUNTER + 1))

  CURRENT_TIME=$(date +%s)
  ELAPSED_TIME=$((CURRENT_TIME - START_TIME))

  HOURS=$((ELAPSED_TIME / 3600))
  MINUTES=$(((ELAPSED_TIME % 3600) / 60))
  SECONDS=$((ELAPSED_TIME % 60))

  CPU_TEMP_RAW=$(adb -s "$DEVICE" shell "cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null || echo '0'")
  CPU_TEMP=$((CPU_TEMP_RAW / 1000))

  MEM_DATA=$(adb -s "$DEVICE" shell "
        mem_total=\$(grep MemTotal /proc/meminfo | awk '{print \$2}');
        mem_avail=\$(grep MemAvailable /proc/meminfo | awk '{print \$2}');
        if [ -n \"\$mem_total\" ] && [ -n \"\$mem_avail\" ]; then
            mem_usage=\$((100 - (mem_avail * 100 / mem_total)));
            echo \"\$(echo \"scale=1; \$mem_total/1024\" | bc) \$(echo \"scale=1; \$mem_avail/1024\" | bc) \$mem_usage\";
        else
            echo \"0 0 0\";
        fi
    ")

  read MEM_TOTAL_MB MEM_AVAIL_MB MEM_USAGE <<<"$MEM_DATA"

  CPU_FREQ=$(adb -s "$DEVICE" shell "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 2>/dev/null || echo '0'")
  CPU_FREQ_MHZ=$((CPU_FREQ / 1000))

  if [ $CPU_TEMP -ge 70 ]; then
    TEMP_COLOR=$RED
    TEMP_STATUS="[Critical]"
  elif [ $CPU_TEMP -ge 60 ]; then
    TEMP_COLOR=$RED
    TEMP_STATUS="[Hot]"
  elif [ $CPU_TEMP -ge 50 ]; then
    TEMP_COLOR=$YELLOW
    TEMP_STATUS="[Warm]"
  else
    TEMP_COLOR=$GREEN
    TEMP_STATUS="[OK]"
  fi

  if [ $(echo "$MEM_USAGE >= 90" | bc) -eq 1 ]; then
    MEM_COLOR=$RED
    MEM_STATUS="[Critical]"
  elif [ $(echo "$MEM_USAGE >= 80" | bc) -eq 1 ]; then
    MEM_COLOR=$RED
    MEM_STATUS="[High]"
  elif [ $(echo "$MEM_USAGE >= 60" | bc) -eq 1 ]; then
    MEM_COLOR=$YELLOW
    MEM_STATUS="[Elevated]"
  else
    MEM_COLOR=$GREEN
    MEM_STATUS="[OK]"
  fi

  echo -e "${PURPLE}${BOLD}======================================="
  echo -e "${PURPLE}${BOLD}     Monitor (${TIMESTAMP})     "

  echo -e "${GREEN}     Device: $DEVICE${NC}     "
  echo -e "${GREEN}     Tick #$COUNTER · ${HOURS}h ${MINUTES}m ${SECONDS}s"
  echo -e "${PURPLE}${BOLD}======================================="
  echo ""

  echo -e "${CYAN}${BOLD}[CPU]${NC}"
  echo -e "  Freq: ${GREEN}${CPU_FREQ_MHZ} MHz${NC}"
  echo -e "  Temp: ${TEMP_COLOR}${CPU_TEMP}°C ${TEMP_STATUS}${NC}"
  echo ""

  echo -e "${CYAN}${BOLD}[Memory]${NC}"
  echo -e "  Usage: ${MEM_COLOR}${MEM_USAGE}% ${MEM_STATUS}${NC}"
  echo -e "  Avail: ${GREEN}${MEM_AVAIL_MB} MB${NC}   Total: ${BLUE}${MEM_TOTAL_MB} MB${NC}"
  echo ""


  echo -e "${YELLOW}Ctrl+C to stop${NC}"
  echo ""

  sleep 1
done
```



### Barcode readability vs distance

![Sample 1](../../../assets/image-20260407114344250.png)
![Sample 2](../../../assets/image-20260407115306558.png)
![Sample 3](../../../assets/image-20260407115335207.png)
![Sample 4](../../../assets/image-20260407115352094.png)
![Sample 5](../../../assets/image-20260407115459366.png)
![Sample 6](../../../assets/image-20260407115520021.png)
