ubiattach fails with bad VID header offset 2048, expected 512 ???
ubiattach fails with bad VID header offset 2048, expected 512 ???
The is the first thing out of the box. It reads block 0 to get the ubi_ec_hdr then parses it.
Our system reads/writes 2048 byte blocks with only 32 bytes available in the oob area per block.
For my system, is vid_hdr_offset supposed to be 2048, ie point into the oob area?
How do I get it working?
Thanks,
Cal Page
here's the log
UBI DBG (pid 2785): ctrl_cdev_ioctl: attach MTD device
UBI: attaching mtd12 to ubi0
UBI DBG (pid 2785): io_init: min_io_size 2048
UBI DBG (pid 2785): io_init: hdrs_min_io_size 512
UBI DBG (pid 2785): io_init: ec_hdr_alsize 512
UBI DBG (pid 2785): io_init: vid_hdr_alsize 512
UBI DBG (pid 2785): io_init: vid_hdr_offset 512
UBI DBG (pid 2785): io_init: vid_hdr_aloffset 512
UBI DBG (pid 2785): io_init: vid_hdr_shift 0
UBI DBG (pid 2785): io_init: leb_start 2048
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
UBI DBG (pid 2785): ubi_scan: process PEB 0
UBI DBG (pid 2785): ubi_io_read_ec_hdr: read EC header from PEB 0 UBI DBG (pid 2785): ubi_io_read: read 64 bytes from PEB 0:0
UBI DBG (pid 2785): ubi_io_read: read: addr = 0, len = 64, ubi->mtd->read = 0xc0 cfe16c
UBI error: validate_ec_hdr: bad VID header offset 2048, expected 512 UBI error: validate_ec_hdr: bad EC header
Erase counter header dump:
magic 0x55424923
version 1
ec 1
vid_hdr_offset 2048
data_offset 4096
hdr_crc 0x7f585319erase counter header hexdump:
00000000: 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 01 00 00 08 00 00 00 10 0 0 00 00 00 00 00 00 00 00 UBI#............................ 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 7f 58 53 19 .............................XS.
UBI error: ubi_io_read_ec_hdr: validation failed for PEB 0
UBI error: ubi_attach_mtd_dev: failed to attach by scanning, error -22
Quoted 4 lines · Cal Page
ubiattach fails with bad VID header offset 2048, expected 512 ???
The is the first thing out of the box. It reads block 0 to get the
ubi_ec_hdrthen parses it.
I guess you generated an image with wrong sub-page size?
Quoted 8 lines
UBI DBG (pid 2785):
ctrl_cdev_ioctl: attach MTD device
UBI: attaching mtd12 to ubi0
UBI DBG (pid 2785):io_init:min_io_size2048
UBI DBG (pid 2785):io_init:hdrs_min_io_size512
UBI DBG (pid 2785):io_init:ec_hdr_alsize512
UBI DBG (pid 2785):io_init:vid_hdr_alsize512
UBI DBG (pid 2785):io_init:vid_hdr_offset512
UBI DBG (pid 2785):io_init:vid_hdr_aloffset512
Quoted 8 lines
UBI DBG (pid 2785):
io_init:vid_hdr_shift0
UBI DBG (pid 2785):io_init:leb_start2048
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
You have 512 bytes sub-pages, so UBI expects the volume ID header to be at offset 512.
Probably these sections should give you some understanding how and at which offsets the headers are stored:
http://www.linux-mtd.infradead.org/doc/ubi.html#L_overhead
http://www.linux-mtd.infradead.org/faq/ubi.html#L_ubi_mkimg
http://www.linux-mtd.infradead.org/faq/ubi.html#L_find_min_io_size
Anyway, if you want to force UBI to use other position for the VID header, there are UBI module options for this. Take a look at what 'modinfo ubi' tells.
Signature · 2 lines
Best regards, Artem Bityutskiy (Битюцкий Артём)