Skip to content

ARM Platforms

Kevin Kim edited this page Aug 16, 2025 · 3 revisions

ARM Platforms

This guide explains how to install and use Nimf on ARM-based platforms.

🎯 Supported Platforms

Platform Architecture Status Installation Method
Raspberry Pi 4 ARM64 ✅ Stable GitHub Releases/APT
Orange Pi PC+ ARM32 ✅ Stable Source Build
Armbian ARM32/64 ✅ Stable GitHub Releases/Source
Manjaro ARM ARM64 ✅ Stable Source Build

🚀 Raspberry Pi 4 (ARM64)

GitHub Releases (Recommended)

# Download ARM64 package
wget https://github.com/hamonikr/nimf/releases/latest/download/nimf_1.4.0-1_arm64.deb

# Install package
sudo dpkg -i nimf_*.deb
sudo apt-get install -f  # Resolve dependencies

# Configure input method
im-config -n nimf

# Reboot
sudo reboot

APT Repository (Alternative)

# Add HamoniKR repository
wget -qO- https://update.hamonikr.org/add-update-repo.apt | sudo -E bash -

# Install core package
sudo apt install nimf

# Add multilingual support (optional)
sudo apt install nimf-i18n

# Configure input method
im-config -n nimf

# Reboot
sudo reboot

Build from Source

# Install dependencies
sudo apt install build-essential devscripts debhelper autoconf automake \
    libglib2.0-dev intltool gtk-doc-tools libgtk-3-dev libgtk2.0-dev \
    qtbase5-dev qt6-base-dev libayatana-appindicator3-dev librsvg2-bin \
    libhangul-dev anthy libxkbcommon-dev libxklavier-dev libm17n-dev \
    m17n-db librime-dev

# Download source and build
git clone https://github.com/hamonikr/nimf.git
cd nimf
debuild -b -uc -us

# Install packages
cd ..
sudo dpkg -i nimf_*.deb nimf-libhangul_*.deb

# Install all packages (optional)
sudo dpkg -i *.deb

# Configure input method
im-config -n nimf

🍊 Armbian (Orange Pi PC+)

Environment Information

  • OS: Armbian Bionic (kernel 5.3.y)
  • Chipset: Allwinner H3
  • Architecture: ARM32 (armhf)

Build and Install

# Install additional dependencies (Armbian specific)
sudo apt install fakeroot libgtk-3-bin

# Install basic dependencies
sudo apt install -y libglib2.0-dev intltool libgtk-3-dev libgtk2.0-dev \
    libqt4-dev qtbase5-dev qtbase5-private-dev libappindicator3-dev \
    librsvg2-bin libhangul-dev libanthy-dev anthy librime-dev \
    libxkbcommon-dev libwayland-dev wayland-protocols libxklavier-dev \
    libm17n-dev m17n-db gtk-doc-tools devscripts build-essential \
    debhelper fakeroot libgtk-3-bin

# Download source and build
git clone https://github.com/hamonikr/nimf.git
cd nimf
debuild -b -uc -us

# Install packages
cd ..
sudo dpkg -i ./libnimf1_*.deb
sudo dpkg -i ./nimf_*.deb  
sudo dpkg -i ./nimf-libhangul_*.deb

# Configure input method
im-config -n nimf

# Reboot
reboot

⚠️ Notes

  • Build Time: Approximately 40+ minutes
  • Memory: Minimum 1GB RAM recommended
  • Storage: Minimum 2GB free space for build

Pre-built Packages

Pre-built packages provided by davidjung-kr:

# Download pre-built packages
wget https://github.com/davidjung-kr/nimf-bin-armhf/releases/latest/download/nimf-armhf.tar.gz

# Extract and install
tar -xzf nimf-armhf.tar.gz
cd nimf-armhf
sudo dpkg -i *.deb

# Configure input method
im-config -n nimf
reboot

🐧 Manjaro ARM (Raspberry Pi 4)

Environment Information

  • OS: Manjaro ARM XFCE
  • Platform: Raspberry Pi 4
  • Architecture: ARM64

Build and Install

# Use special ARM branch
git clone -b manjaro-arm --single-branch https://github.com/hamonikr/nimf.git

# Install dependencies
sudo pacman -S meson ninja qt5-tools base-devel

# Build
cd nimf/manjaro-arm
makepkg -s

# Install
sudo pacman -U nimf-*.pkg.tar.xz

Environment Setup

# Create/edit ~/.xprofile file
nano ~/.xprofile

# Add the following content
export GTK_IM_MODULE=nimf
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE=nimf
export XMODIFIERS="@im=nimf"
nimf

Reboot

sudo reboot

⚙️ ARM Platform Optimization

Performance Optimization

Memory Usage Optimization

# Disable unnecessary input engines
# Edit ~/.config/nimf/nimf.conf
[Engines]
enabled-engines=nimf-libhangul,nimf-system-keyboard

CPU Usage Optimization

# Disable auto-completion feature (optional)
# nimf-settings → Korean → Disable auto-completion

Low Power Mode Settings

# Disable system tray indicator (optional)
# In ~/.config/nimf/nimf.conf
[General]
show-tray-icon=false

🐛 ARM Platform Troubleshooting

Common Issues

1. Build Takes Too Long

# Adjust parallel build options (according to CPU cores)
make -j2  # For dual core
make -j4  # For quad core

2. Build Fails Due to Memory Shortage

# Create swap file
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Disable swap after build (optional)
sudo swapoff /swapfile
sudo rm /swapfile

3. Qt Related Errors (ARM Platforms)

# Disable Qt4 on Qt4 related errors
./configure --disable-qt4

# Disable Qt6 when Qt6 is not available
./configure --disable-qt6

ARM-specific Environment Variables

# Add to ~/.bashrc
export ARM_OPTIMIZATION=1
export QT_QPA_PLATFORM=linuxfb  # If needed
export QT_QPA_FONTDIR=/usr/share/fonts

📊 Performance Benchmarks

Raspberry Pi 4 Performance

  • Startup Time: ~2 seconds
  • Memory Usage: ~15MB
  • CPU Usage: ~1% (idle)

Orange Pi PC+ Performance

  • Startup Time: ~3 seconds
  • Memory Usage: ~12MB
  • CPU Usage: ~2% (idle)

🔧 Advanced Configuration

Cross-compilation (Advanced Users)

# Build ARM64 on x86_64
sudo apt install gcc-aarch64-linux-gnu

export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar
export STRIP=aarch64-linux-gnu-strip

./configure --host=aarch64-linux-gnu --prefix=/usr
make -j$(nproc)

Docker-based ARM Build

# Build in ARM64 container
docker run --platform linux/arm64 -v $(pwd):/workspace ubuntu:22.04 bash -c "
cd /workspace && 
apt update && 
apt install -y build-essential git && 
./build.sh
"

📱 Embedded System Support

Minimum Requirements

  • RAM: 256MB or more (recommended: 512MB)
  • Storage: 50MB or more
  • CPU: ARMv7 or higher

Lightweight Build

./configure --prefix=/usr \
    --disable-nimf-anthy \
    --disable-nimf-rime \
    --disable-nimf-m17n \
    --disable-gtk-doc \
    --enable-bundled-libhangul

🌐 Language Support

📚 Related Documentation

Clone this wiki locally