i.MX6ULL Porting Log 02: Project Layout, a Serial Port Trap, and the Current Board Baseline
The Goal
i.MX6ULL Porting Log 02: Project Layout, a Serial Port Trap, and the Current Board Baseline
The Goal
Build a clean project structure and capture the current board boot baseline through the serial console.
The Problem
At first, this level looked simple:
- create folders
- initialize Git
- connect the serial cable
- save the boot log
But the real system was not that simple.
This board is not in confirmed factory-default state. Its serial output already contains traces from a previous project. So I could not call this log a factory baseline. I had to treat it as a current board baseline.
I also hit a second problem: my CH340 serial adapter was detected by Linux, but the serial port disappeared immediately.
The Fix
Step 1: Build the project layout
I created a clean working structure:
mkdir -p ~/imx6ull-porting/{src,build,out,logs,docs}
cd ~/imx6ull-porting
git init
This keeps source code, build output, final output, logs, and documents separated.
Step 2: Record the board state first
Before trusting the serial log, I wrote down the truth:
- the board is not in confirmed factory-default state
- the current boot output contains traces from an older project
- this log must be treated as a current board baseline
This was important because future debugging must compare against the real current state, not an imagined clean state.
Step 3: Find the serial trap
I checked lsusb and confirmed the CH340 adapter was detected.
But the kernel log showed the real problem:
ch341-uart converter now attached to ttyUSB0
usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
So the problem was not the cable.
It was brltty, a background accessibility service in Ubuntu.
It hijacked the CH340 device and disconnected it.
Step 4: Remove the conflicting service
I fixed it by removing brltty:
sudo apt-get remove --purge -y brltty
After that, /dev/ttyUSB0 became stable.
Step 5: Open the serial console and capture the baseline
I used picocom and rebooted the board.
The captured log showed important real facts:
U-Boot 2016.03Board: I.MX6U ALPHA|MINIDRAM: 512 MiBNet: FEC1
It also showed that the current board still had an old network boot path:
FEC1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
TFTP from server 169.254.82.125
Filename 'zImage'
ARP Retry count exceeded; starting again
Filename 'imx6ull-alientek-emmc.dtb'
Bad Linux ARM zImage magic!
That means the board is currently trying to boot by TFTP, but the path is not working correctly.
The Test
This level passes if:
- the project folders exist
board_state.mdexistscurrent_board_boot_baseline.logexists- the serial console works
- the current board state is clearly documented
The Debug Log
- Issue 1: The CH340 device was detected, but
/dev/ttyUSB0was unstable - Fix: Found that
brlttyhijacked the device, then removed it - Issue 2: Normal user access gave
Permission denied - Fix: Used
sudo picocomfirst, then prepared to fix group permissions later - Issue 3: The board was not in clean factory state
- Fix: Recorded that truth first, and saved the log as a current board baseline instead of a factory baseline
What I Learned
This level was not about code. It was about discipline.
I learned two important things:
- Always record the real board state before trusting any boot log
- When serial devices behave strangely on Linux, check
dmesgfirst
In low-level work, the real system state is always more important than assumptions.
메타데이터
- post_id
- 95e9045f9d46
- slug
- i-mx6ull-porting-log-02-project-layout-a-serial-port-trap-and-the-current-board-baseline-95e9045f9d46
- url
- https://medium.com/@zjiang0703/i-mx6ull-porting-log-02-project-layout-a-serial-port-trap-and-the-current-board-baseline-95e9045f9d46
- canonical_url
- https://medium.com/@zjiang0703/i-mx6ull-porting-log-02-project-layout-a-serial-port-trap-and-the-current-board-baseline-95e9045f9d46
- author_url
- https://medium.com/@zjiang0703
- status
- ok
- fetched_at
- 2026-07-15 04:16:48