Multiroom Audio Streaming with Snapcast
Build and install snapcast
Build and install snapcast
npx create-docusaurus@latest yocto.dev classic cd yocto.dev npx docusaurus start
Install gitlab with docker-compose
docker-compose
Android adb device was attached to laptop(C1) running Ubuntu, the other computer also with Ubuntu installed, we call it C2.
For a suspected memory leak issue on a legacy device running OpenWrt build with gcc-8, I need a toolchain with leak sanitizer support, so I try to generate o...
Prepare Test Environment Ubuntu 22.04
Build perfetto git clone https://github.com/google/perfetto -b v43.1 git clone https://android.googlesource.com/platform/external/perfetto/ && cd per...
Flutter SDK git clone https://github.com/sony/flutter-elinux.git sudo mv flutter-elinux /opt/ export PATH=$PATH:/opt/flutter-elinux/bin:/opt/flutter-elinux/f...
Prerequisite
Preparation
Install CodeChecker and dependencies
Build infer ```sh sudo apt install libstdc++-12-dev linux-libc-dev:i386 gcc-multilib sudo ln -sf /usr/include/x86_64-linux-gnu/asm /usr/include/asm git clone...
Preparation sudo apt install -y flex help2man libtool-bin bison libncurses5-dev wget -c http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar...
Cross compile ltp
Add machine roc-rk3328-cc
Build libtcmalloc
perf-tools is a collection of performance analysis tools based on perf events developed by Brendan Gregg, perf-tools are widely used on linux server and can ...
The perf tool has been tested with ingenic T40.
vmstat
Generate Calibre Database
I have built a rootfs with buildroot, rootfs is squashfs with overlayfs support for ease of writting configuration files such as dropbear that needs write pe...
If you are hosting services at home and want to be accessed from outside, there are couple of options: Cloudflare Tunnel frp nps ngrok
This issue happens when I trying to using some app, and cannot failed to install it’s dependancies, commplaining about python3, so I uninstalled python3, apt...
I need to work on my personal projects outside sometimes, when I need to access to my home computer I use RustDesk, but the key map for Ubuntu and macOS are ...
cowTransfer-uploader is a command line tool that can be used as part of automation, here is the example of how to get download URL and secret code: ```sh mem...
For making a real world product, robustness is very important, some process may crash occasionally, this is possible even if the system is passed all kinds o...
After I uploaded my photos to nextcloud, I realized, nextcloud is probably not a good choice for hosting photos, so this time I try to manage these photos wi...
Previously, I use cowtransfer to share files with our partners, thanks to cowtransfer-uploader, it is very convenient for automation, this changed recently, ...
This is a long last issue that happens every time I open a new tab or open iTerm, I thought it was a issue of fzf, and it is not, actually, because reinstall...
OpenWrt using its own format of patch file which can be created with quilt. Before creating patches for OpenWrt, we need to create a configuration file for q...
Previously I deployed a nextcloud container in digitalocean droplet for my note synchronization. This time I want use nextcloud to hold all my documents and ...
Jenkins is one of the most popular continuous integration solution, I use it both for work and personal project, it provides webUI interface, to save to conf...
As a system engineer, I have to manage various build envrionmets, build all the projects against one Ubuntu version became imposssible, one change for one pr...
There are many ways to create a toolchain, the most easiest way to do this might be with buildroot, always grab the latest long term support release from off...
I got a board with a minimal rootfs, I don’t know how it was created, I have no source code and the rootfs is squashfs, so nothing can be changed, the good t...
I use Syncthing to sync my notes from work desktop compute to vps server, so I can continue my work at home, syncthing is pretty easy to setup and use.
I’ve been using Joplin for about 3 months, I love it, than any other note taking apps. Everything works fine until this Tuesday afternoon (around 3:20 PM to ...
Prepare for build yocto project
Update: I switched to vim+git for note-taking this week because Joplin deleted a lot of my notes by accident, I put this post here for reference only, I m...
reboot
Command
When I am writing plugin for workload automation, I met a issue that execution will fail when I want to enter android recovery mode with: self.target.execute...
tmux
Bash
Prerequsite
After trying many note taking apps I decide to use Joplin which is an open source project, there are many options out there for synchronizing the notes via O...
Android operation system is becoming more and more complicated as time goes by, some system issues are hard to diagnostic, and not easy to reproduce, Android...
Recently I was debugging a system hang problem on arm board, I reproduced this issue once, and noticed when this occurred, the interrupts on can interface is...
Making blink LED working with Arduino on ESP8266 is incredibly easy, with just a few clicks, of course you need to install Arduino IDE first, download the la...
MicroPython is a python implementation aimed to be running on MCUs such as ESP8266/ESP32, stm32 etc, all the ports can be found here, the following will only...
NodeMCU is one of the most popular firmware for ESP8266 and ESP32 wifi SoCs, the firmware is written in c and has Lua interpreter builtin which is based on L...
IoT gains too much attention these years, there are various RTOS are claimed to IoT OS, Zephyr OS is one of them, it is originated from WindRiver and is a pr...
Serial console is always an very important tool when doing low level development such as kernel or bootloader, the most commonly used are the USB to serial c...
The NAND flash used in mini2440 is from Samsung, the part number is K9F2G08U0C, the meaning of it is defined in Samsung Part Number Decoder, we can get the b...
Wireless to UART Bridge
I’ve done a lot of work on u-boot-2010.09 for MINI2440 to make development process more comfortable, unfortunately, the archived u-boot images were deleted b...
The way build ramdisk is not an option for me, load both uImage and ramdisk with U-Boot seems not a good way either, and as uImage is a legacy format, there ...
Machine id mismatch
Poring Linux kernel to board is much easier than the age of version 2.6, I want to make an update my school projects, part of this procedure involves the ker...
There are lot of IDEs out there can build apps or libraries for you, but this is not the way I like, I prefer the command line, today I am gonna show you how...
I have several Raspberry Pis in hand, they are all not being used for a very long time because of the poor performance of the MMC controller, but it doesn’t ...
This is a list of resources I used for expanding my knowledge on U-Boot, kernel and other stuff related embedded system.
Mnemonic Instruction Action ADC Add with carry Rd: = Rn + Op2 + Carry ADD ...
Abbreviation Meaning IIUC If I Understand Correctly NIH Not Invented Here ...
MINI2440 has two SDRAM chips on board, different version have different chipset, my SDRAM is EM63A165TS-6G from EtronTech, the pin and timing is compatible w...
U-Boot is a universal bootloader for many architectures, the U-Boot image build against current version (u-boot-2020.10) cannot fit the size of stepping zone...
Bring board up for the first time, it usually involves debugging with JTAG, in this post I will be using OpenJTAG for mini2440, showing how to load program w...
Previously I installed HassOS, it works pretty well except the fact that it is a black box for me at some extent, this time, I take a step further and try to...
Install docker on Armbian
Jellyfin is an open source local media management system, it is descended from Emby which is now goes commercial, it can fetch metadata from various website ...
Six years ago I use synergy (ver1.5.1) for sharing keyboard and mouse with other computers, which is great, then it became a commercial software, after upgra...
Previously I wrote a post about how to setup TV box as a development machine, I cannot take a box everywhere I go, because it is not that convenient to find ...
I want to improve my English, one way to do this is watching documentaries on TV, but subtitles distract me from the video themselves, I get this around by m...
This is a quick setup of home assistant with docker compose.
VIM vimrc is the ultimate Vim configuration (vimrc), the author is also the founder of Doist.
Segment fault are common issues for native developers, it is caused by accessing memory location that is not allowed to, I’m gonna list the possible reasons ...
Ch 1 Introduction Ch 2 Technology Background Ch 3 Performance Analysis Ch 4 BCC Ch 5 bpftrace Ch 6 CPUs Ch 7 Memory Ch 8 File Systems Ch 9...
Ch 1 Introduction Ch 2 Methodology Ch 3 Operating Systems Ch 4 Observability Tools Ch 5 Applications Ch 6 CPUs Ch 7 Memory Ch 8 File Systems...
From time to time, I need to transfer files from computer to my android phone, install apk for example, I can use the app store if the app can be found there...
I need to work while travelling in the following couple of months, so I need all my devices connected to the internet, N1 has a Ethernet port and wireless mo...
Debugging devices without serial console is big challenge especially for kernel panic issues, pstore (persistent store) writes kernel messages before system ...
While playing Armbian with Phicomm N1 box, I found kernel thread irq/42-0.200908 have very high cpu usage thus cause the load average to around 2, this is a ...
breakpoint
[ 81.890105] CPU: 3 PID: 890 Comm: insmod Tainted: G O 4.19.108-v8+ #1
Install required packages ```bash $ sudo apt install docker.io -y $ sudo apt install docker-compose -y $ sudo apt install lighttpd -y
Preserve white spaces In macOS, you need to press⌥ Opt+Space
Occasionally, you may want to remove a commit from github/gitlab, for example, I pushed a commit to switched the jekyll theme from minima to minimal mistakes...
All-zero address shown when do cat /proc/modules echo 0 > /proc/sys/kernel/kptr_restrict # or with sysctl sysctl kernel.kptr_restrict=0
Basic Setup
Syzkaller is a coverage-guided fuzzer for Linux kernel, it was mainly developed by Dmitry Vyukov, and with many other developers, it’s under active developme...
In Kernel memory debugging techniques, we talked about using script decode_stacktrace.sh to translate addresses to lines, or if only interested in one entry ...
Disable subtitles in VLC by default Go to VLC ➜ Preferences ➜ Subtitles / OSD, enter none in the text box labeled Preferred subtitle language, this works fo...
Visual images are always more attractive than pure numbers or statistics, that’s why WordCloud are so popular, I am considering look for a new job, and gathe...
Armbian is an operation system based on Debian and Ubuntu, created for ARM-based development boards, it also supports a wide variety of TV boxes, and a lot o...
It is well known that, accessing github in China is a torture, cloning a github repository takes too much time, especially for big project like linux kernel,...
Wireless Configuration Most smart devices such as speakers, sockets, air conditioners are headless embedded devices, these devices need to be connected to th...
For a very long time, I want to setup an system that can turn on the TV every morning when I get up and play some video files for English learning, I know I ...
Home security is always the most import part for smart home system, in this blog post, I will show you how to turn an old android phone into a webcam, and wi...
Various types of smart devices designed for smart home are developed, part of them can be connected to apple HomeKit, or connected to vendor’s ECO-system, th...
After uninstalling the Pi-hole, I cannot access internet, and not even ping any domain name, finally, I found the nameserver in /etc/resolv.conf was changed ...
There are many ways to tell which app sends a toast, the most quickest way is to install third-party app such as Toast Source or Toaster, if you don’t want t...
From cpuinfo in procfs, we get a lot information about the cpu on board, how many cores, architecture etc, here is an example output of cpuinfo of RPI 3B+: `...
Battery Historian is a tool for inspecting battery related issues, it works on android 5.0 and above, this can also be used for analyzing performance since b...
Dynamic debug is a great feature for kernel debugging, kernel must be compiled with CONFIG_DYNAMIC_DEBUG option, if it was enabled, all pr_debug(), dev_dbg()...
The magic SysRq key is a key combination(Alt+SysRq+<cmd>) implemented by linux kernel, it is usually used to get more information for further investiga...
I’ve been using vim for a very long time, my vimrc file is based on Amix’s with minor modifications, I think it’s time to move forward embracing excellent pr...
No one can guarantee that he never make mistakes while using command line, even an experienced user.
After upgrading my computer to Ubuntu 18.04, I wanna remove unused packages, so I do an apt autoremove, unfortunately it failed with below messages: sudo apt...
scrcpy is an open source project developed by Genymobile, it can be used to display and control of your android devices over adb connection. The following fe...
item/flavor eng user userdebug ro.secure 0 1 1 security.perf_harden ...
Build kernel with bpf support In order to use bpf, kernel should be at least build with these options: +CONFIG_BPF=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_EVENTS...
Setup Build Environment Follow instructions in Running Android Oreo on Raspberry Pi 3B to setup build environment under Ubuntu.
I think schduling a job with crontab should be easy for me, as I am a veteran linux user, the truth is I don’t know crontab, totally.
Linux kernel has many memory related debug tools to help kernel developers find out memory related issues, these tools are included in upstream kernel: Ke...
rpi3:/ # dmesg [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.14.129-v8+ (fdbai@fdbai-desktop) (gcc version 5.4.0 20160609 (...
Check if a direcotry exists
malloc_debug
cgroups on Android cgroups(control groups for short) was created by Google engineers, and was merged into the mainline at 2008 in version 2.6.24, it was main...
Android build process takes a very long time, especially on low end computers, after build complete, I wanna transfer the final image to ftp server for furth...
Setup Build Environment Follow instructions in Running Android Oreo on Raspberry Pi 3B to setup build environment under Ubuntu.
Workload-automation is a great tool for benchmark automation, it utilizes tools in sdk and android system, including aapt, pm, am etc through devlib, this po...
I need to update a firmware binary which was packaged into apk file, unfortunately I do not have the source code of this apk, so I cannot just do mm to regen...
Verbose output
In order to find out where the problem is with my script, I often use echo for debugging, print line number with echo ${LINENO}, but it is not a optimium way...
Setup Build Environment (Ubuntu 16.04)
Previously I wrote a post about how to use ftrace via trace-cmd, now here comes a real world example showing how to find who deleted a file in Android system.
Installation Doxygen using dot from graphviz to generate graphs, install doxygen and its dependency: sudo apt install doxygen -y sudo apt-get install graphvi...
Aliases are created through the use of the git config command, and will be saved to $HOME/.gitconfig, use below two commands to see a list of aliases:
In this post, I’ll show you how to split tools/perf in linux tree into an separate git repository without losing the commit history.
Install Gerrit First download the latest version of gerrit from Gerrit Releases site:
This post illustrates how to revert a commit in many branches, say 100 for example, and then push to gerrit server with reviewers added.
Server side of v2ray
Ubuntu 16.04 Shadowsocks 2.8.2 Python 2.7.15rc1
Add related packages
Add required packages make menuconfig Network » adblock Network » tcpdump LuCI » 3. Applications » luci-app-adblock
Add packages make menuconfig Network » File Transfer » aria2 Network » Download Manager » webui-aria2 LuCI » 3. Applications » luci-app-aria2
Add miniDLNA related packages
Block mount Add CONFIG_PACKAGE_block-mount=y to target/linux/brcm2708/configs/rpi3b_defconfig to get block mount support
Luci is the default web interface for managing openwrt base home routers, integrate luci with the following patch: diff --git a/target/linux/brcm2708/configs...
Wireless Setup
In the previous post, We run openwrt image on Raspberry Pi 3B, but that is only bring openwrt up, it is not a router.
Checking out OpenWrt code git clone https://www.github.com/openwrt/openwrt
Introduction Bootchart is a great tool for performance analysis and visualization of the Linux/Android boot process, it consists of two parts: data collectio...
Basic ```shell find files created today find . -type f -daystart -ctime -1
Cool online services
Download source code git clone --depth=1 https://github.com/raspberrypi/linux.git
Introduction simpleperf is a native performance profiling tool for Android, like the name indicated, simpleperf is a simplified version of linux-tools-perf w...
what is systrace
Ftrace
I am planning to make android pie runnning on our latest proudct, Continuous Integration team has initialized all the git project, inside citrix, but there i...
Tools Description avocado Avocado is a next generation testing framework inspired by Autotest ...
What is zram Kernel Documentation says it is Compressed RAM based block devices.
Install Java
Best of Vim Tips zzapper 16 Years of Vi + 10+ years of Vim and still learning 31Aug18 : Last Update (Now in VIM Help Format :h helptags) ###These Tips are no...
dumpsys
Create a tag git tag -a v1.0 -m "milestone: v1" git push --tags
Technology News
Installation