Repository navigation
gk7205v300 + imx335 — updates newer than nightly-20260913-910e724 do not work correctly #2439
Description
Good afternoon.
IPC_GK7205V300_G6S
gk7205v300 + imx335 — updates newer than nightly-20260913-910e724 do not work correctly.
I tested over the course of 2 days:
nightly-20260915-fe99bb8 — worked for 6 hours, then black screen with OSD (a reboot or any change in the camera settings helped, and then it worked for another 6 hours)
nightly-20260915-67e5039 — worked for 30 minutes, then black screen
nightly-20260917-1ebaef8 — worked for 30 minutes, then black screen
nightly-20260917-04db148 — worked for 30 minutes, then black screen
Unfortunately, I was unable to determine the cause. In the logs, all versions contain the following errors:
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
17.09.2026, 13:48:44 Parking-cam kern.err kernel: goke-i2c 12060000.i2c: wait idle abort!, RIS: 0x611
but only in the versions from nightly-20260915-fe99bb8 does it lead to a black screen.
root@Parking-cam:~# fw_printenv
baudrate=115200
bootcmd=setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000
bootdelay=0
bootfile="uImage"
da=mw.b 0x42000000 ff 1000000;tftp 0x42000000 u-boot.bin.img;sf probe 0;flwrite
dc=mw.b 0x42000000 ff 1000000;tftp 0x42000000 custom-x.cramfs.img;sf probe 0;flwrite
dd=mw.b 0x42000000 ff 1000000;tftp 0x42000000 mtd-x.jffs2.img;sf probe 0;flwrite
de=mw.b 0x42000000 ff 1000000;tftp 0x42000000 u-boot.env.img;sf probe 0;flwrite
devid=000699Q3
dl=mw.b 0x42000000 ff 1000000;tftp 0x42000000 logo-x.cramfs.img;sf probe 0;flwrite
dr=mw.b 0x42000000 ff 1000000;tftp 0x42000000 romfs-x.cramfs.img;sf probe 0;flwrite
du=mw.b 0x42000000 ff 1000000;tftp 0x42000000 user-x.cramfs.img;sf probe 0;flwrite
dw=mw.b 0x42000000 ff 1000000;tftp 0x42000000 web-x.cramfs.img;sf probe 0;flwrite
ethact=eth0
gatewayip=192.168.1.1
hardware=IPC_GK7205V300_G6S
ipaddr=192.168.1.10
manufacturer=Xiongmai
netmask=255.255.0.0
serverip=192.168.1.254
soc=gk7205v300
stderr=serial
stdin=serial
stdout=serial
tk=tftp 0x42000000 uImage;setenv setargs setenv bootargs ${bootargs};run setargs;bootm 0x42000000
totalmem=128M
ua=mw.b 0x42000000 ff 1000000;tftp 0x42000000 upall_verify.img;sf probe 0;flwrite
uk=mw.b 0x42000000 ff 1000000;tftp 0x42000000 uImage.${soc} && sf probe 0;sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}
up=mw.b 0x42000000 ff 1000000;tftp 0x42000000 update.img;sf probe 0;flwrite
ur=mw.b 0x42000000 ff 1000000;tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0;sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}
ethaddr=00:12:33:dd:45:5c
sensor=imx335
osmem=64M
bootargs=mem=128M console=ttyAMA0,115200 panic=20 rootfstype=squashfs root=/dev/mtdblock3 init=/init mtdparts=sfc:256k(boot),64k(wtf),2048k(kernel),5120k(rootfs),-(rootfs_data) mmz_allocator=cma mmz=anonymous,0,0x44000000,64M
upgrade_available=1
bootcount=0

Activity
widgetii commentedon Sep 18, 2026
Sorry — the command I sent you earlier was wrong: BusyBox
tarhas no-j. Usebzcat. Everything below is now verified end to end on a gk7205v300 + IMX335 here.Why a majestic binary and not a firmware image
You were right that there is no
nightly-20260914in the list — the firmware nightly did not publish that day. The majestic binary did. So the exact midpoint between your good 09-13 and your bad 09-15 is reachable without reflashing anything: 30 commits, split into 17 and 13.Stay on the firmware you trust (
nightly-20260913-910e724) and swap only majestic:Expected:
Lite HiSilicon (gk7205v200), master+b54735d, 2026-09-14 17:32. If that line is right:Copy only
majestic. The tarball also contains amajestic.yaml— do not copy that one, it would overwrite your settings.Then use the camera as usual and tell us which happened:
Either answer halves the search and we can go to individual commits from there.
Putting it back
Same recipe, different
versionId— no reflash and no backup needed:OP5L7k91Fb7JdDM6xTEP713xLm7ljSw1master+98b8049yTcLV3Rr1f7ojlYa9qqcZFRURnyWIkrWmaster+ad673e2All three were downloaded, extracted and run on this hardware before being suggested.
About the i2c errors — they are not your wiring
On a lab gk7205v300 + IMX335 set to your exact build, your memory layout (
mmz_allocator=cma mmz=anonymous,0,0x44000000,64M) and your settings (5M_imx335.ini,isp.blkCnt: 4, jpeg off, h265 2592x1944 + 1280x960, mirror+flip, automatic day/night on pins 11/10), the same burst appeared on its own after a couple of hours:That is the same three things arriving together — night switch, sensor-bus storm, DNS stall — that your 17.09 log shows at 13:48. So it reproduces here, and it is not something particular to your board.
What has not reproduced here yet is the black picture itself. That is exactly why your half-hour is worth more than a day of ours, and why the test above is the thing that will actually settle it.
По-русски
Извините — команда, которую я присылал раньше, была неверной: в BusyBox у
tarнет опции-j. Нужно использоватьbzcat. Всё, что ниже, проверено целиком на gk7205v300 + IMX335 здесь.Почему бинарник majestic, а не образ прошивки. Вы были правы: сборки прошивки
nightly-20260914действительно нет — в тот день ночная сборка прошивки не публиковалась. А вот бинарник majestic за 14-е есть. Значит ровная середина между вашим рабочим 13-м и нерабочим 15-м достижима вообще без перепрошивки: 30 коммитов делятся на 17 и 13.Оставайтесь на прошивке, которой доверяете (
nightly-20260913-910e724), и подмените только majestic:Ожидается:
Lite HiSilicon (gk7205v200), master+b54735d, 2026-09-14 17:32. Если строка версии верная:Копируйте только
majestic. В архиве есть ещёmajestic.yaml— его копировать не надо, он перезапишет ваши настройки.Дальше просто пользуйтесь камерой и напишите, что получилось:
Любой из ответов вдвое сокращает поиск, дальше дойдём до отдельных коммитов.
Вернуть как было — та же последовательность, другой
versionId, без перепрошивки и без резервной копии:OP5L7k91Fb7JdDM6xTEP713xLm7ljSw1master+98b8049yTcLV3Rr1f7ojlYa9qqcZFRURnyWIkrWmaster+ad673e2Все три скачаны, распакованы и запущены на этом железе перед тем, как предлагать.
Про ошибки i2c — это не ваша пайка. На лабораторной gk7205v300 + IMX335, настроенной на вашу сборку, вашу разметку памяти (
mmz_allocator=cma mmz=anonymous,0,0x44000000,64M) и ваши настройки (5M_imx335.ini,isp.blkCnt: 4, jpeg выключен, h265 2592x1944 + 1280x960, mirror+flip, автоматический день/ночь на пинах 11/10), такая же пачка появилась сама через пару часов — переключение в ночь, шторм на шине датчика и отвал DNS приходят вместе, ровно как в вашем логе от 17.09 в 13:48.Чего здесь пока не удалось воспроизвести — это самой чёрной картинки. Именно поэтому ваши полчаса стоят больше, чем наши сутки.
Dionisgr commentedon Sep 19, 2026
I performed a test of Majestic master+b54735d, 2026-09-14 17:32. The result: 30 minutes and then a black screen again. At 07:51:34 the camera started, at 08:21:48 — black screen. On the recorder, it simply turns into a black screen with OSD, no artifacts. Logs attached
majestic-logs fr13 m14.txt
2026-09-19.08_21_50-2026-09-19.08_21_55.mp4
widgetii commentedon Sep 19, 2026
We found it, and it is not your hardware. Here is a build with the fix, if you are willing to run one more test.
What it turned out to be
The sensor's clock was being switched off underneath a running pipeline. One bit, in one register.
0x120100F0, bit 0 (sensor0_cken) on your SoC family:A sensor with no clock cannot answer i2c at all, which is why the kernel prints
i2c_master_send error, ret=-5— the driver is talking to a sensor that has stopped listening. The encoder keeps running on the last frame it latched, so you get a frozen/black picture with the OSD still drawn on it, and only a pipeline rebuild fixes it — which is exactly why a reboot or any settings change brought it back.Reproduced here on a lab hi3516ev300 + IMX335 this morning, deterministically:
1800 seconds is thirty minutes. majestic's telemetry sends its first report 30 minutes after start and every 6 hours after that, and to fill in one field it asked the sensor over i2c who it was. That probe switched the clock off and did not put it back. Your own numbers — 30 minutes, 30 minutes, 30 minutes, and one run of 6 hours — are those two timers and nothing else. That is also why it looked like it depended on the firmware version: it always could happen, and a change in mid-September made the probe start arriving while the pipeline was streaming.
Writing that one bit back by hand stopped 908 accumulated errors dead and brought the picture back instantly, with nothing else touched.
The test build
Same procedure you already ran — only the URL differs, and this one needs no
versionId:Expected:
Lite HiSilicon (gk7205v200), HEAD+483231119, 2026-09-19 08:12. Then:Copy only
majestic— the archive also has amajestic.yamlwhich would overwrite your settings.This build has been started on a lab gk7205v300 first: both encoders come up and it streams, with the same memory footprint as the stock build.
You no longer have to wait for a black screen
You can watch the actual fault directly, which takes seconds instead of half an hour:
0x00000011— sensor clock on, healthy0x00000010— this is the bug happeningWorth checking about 35 minutes after a start, and again the next day. If it reads
0x...11both times, the fix is holding. If you ever see0x...10, that is the fault and the picture will be frozen.Back to stock
Thank you for running the 14 September build — that measurement is what made this findable.
По-русски
Нашли, и это не ваше железо. Ниже сборка с исправлением, если готовы проверить ещё раз.
Что оказалось. У сенсора выключался тактовый сигнал прямо под работающим конвейером. Один бит в одном регистре:
0x120100F0, бит 0 (sensor0_cken) —0x00000011норма,0x00000010поломка. Сенсор без такта не отвечает по i2c вообще, отсюдаi2c_master_send error, ret=-5: драйвер обращается к сенсору, который перестал слушать. Энкодер продолжает работать на последнем кадре, поэтому картинка замирает с наложенным OSD, и помогает только пересборка конвейера — ровно поэтому перезагрузка или любое изменение настроек всё чинило.Воспроизвели сегодня утром на лабораторной hi3516ev300 + IMX335, детерминированно:
1800 секунд — это тридцать минут. Телеметрия majestic отправляет первый отчёт через 30 минут после старта и далее каждые 6 часов, и ради одного поля опрашивала сенсор по i2c. Этот опрос выключал такт и не возвращал его обратно. Ваши цифры — 30 минут, 30 минут, 30 минут и один прогон на 6 часов — это ровно эти два таймера.
Сборка для проверки — та же процедура, что вы уже выполняли, только ссылка другая и
versionIdне нужен:Ожидается
Lite HiSilicon (gk7205v200), HEAD+483231119, 2026-09-19 08:12. Затем:Копируйте только
majestic— в архиве есть ещёmajestic.yaml, он перезапишет ваши настройки. Сборка предварительно запущена на лабораторной gk7205v300: оба энкодера поднимаются, поток идёт.Теперь не нужно ждать чёрного экрана — саму неисправность видно сразу:
0x00000011— такт включён, всё хорошо;0x00000010— это и есть баг. Имеет смысл посмотреть минут через 35 после старта и потом на следующий день.Вернуться на штатную сборку — та же последовательность с
versionId=OP5L7k91Fb7JdDM6xTEP713xLm7ljSw1(это ваша рабочая от 13 сентября).Спасибо, что прогнали сборку от 14 сентября — именно это измерение и позволило это найти.
hal: a sensor clock we did not turn on is not ours to turn off (#219)
Dionisgr commentedon Sep 20, 2026
The cameras worked normally for 24 hours, 0x00000011 did not change. The issue can be considered resolved.
But when updating from version nightly-20260913-910e724 on another camera via sysupgrade --build=nightly-20260919-02d6035, after 30 minutes there is a black screen. It turns out that in the majestic master+e0521b4, 2026-09-19 17:32, changes for the gk7205v300 were not included, or is this a problem specifically with my modules?
hal: an entitlement must not outlive the probe that took it (#220)
widgetii commentedon Sep 20, 2026
Thank you for both halves of that — the 24-hour confirmation and the second camera. They are more useful together than either would be alone, because between them they caught a mistake of mine.
Short answer to your question
The gk7205v300 changes were included in
nightly-20260919. I checked all three links: that build's majestic contains the fix, and it pins the fixed ipctool. It is not your modules.What happened is that I broke it again, a few hours after the build you tested.
What the two cameras tell us
0x00000011held 24 h — correctnightly-20260919, built 17:32Between those two builds the fix went through code review, and I changed it in response to a review comment. That change was wrong.
The original fix said: if the clock is already running when a probe starts, it is not ours, so leave it alone. Review pointed out this means a probe that had itself turned the clock on sometimes fails to turn it back off, and asked me to keep track of that case. I did — by checking whether the register still held the exact value we had written.
It does. But so does the value the camera's own video pipeline writes. Both write
0x11. So that check cannot tell "our own change, still in place" from "the pipeline is simply running", and the old fault came straight back:Your first camera never saw this because its build predates that change.
Fixed
OpenIPC/ipctool#220 is merged, restoring the original behaviour and pinning it with a test that replays your exact sequence — probe at boot, pipeline starts, probe thirty minutes later — and fails against the build you have. The majestic side follows now, and the next nightly will carry it.
The trade the review was worried about is real but small: a probe that switches the clock on may leave it on. That costs microamps. Switching off a clock a running camera is using costs the picture, which is what you have been living with.
If you want the second camera working before the next nightly
The build you already proved over 24 hours is still the right one:
Or wait for the nightly after this lands.
devmem 0x120100F0tells you which state a camera is in without waiting for the picture to go:0x00000011good,0x00000010the fault.Sorry for the extra round trip — and thank you for testing the second camera rather than assuming the first result covered it. That is the only reason this was caught in a day.
По-русски
Спасибо за обе половины — и за подтверждение по 24 часам, и за вторую камеру. Вместе они поймали мою ошибку.
Коротко по вашему вопросу. Изменения для gk7205v300 вошли в
nightly-20260919— я проверил все три звена. Дело не в ваших модулях. Просто я сломал это заново, через несколько часов после той сборки, которую вы тестировали.0x00000011держится 24 ч — верноnightly-20260919, 17:32Между этими двумя сборками исправление прошло ревью, и я изменил его по замечанию. Изменение было неверным.
Исходное правило: если такт уже включён, когда начинается опрос, значит он не наш — не трогаем. Ревьюер заметил, что тогда опрос, который сам включил такт, иногда его не выключает обратно, и попросил это учесть. Я учёл — проверкой, что в регистре всё ещё ровно то значение, которое мы записали.
Оно там. Но такое же значение записывает и сам видеоконвейер камеры. Оба пишут
0x11. Поэтому проверка не отличает «наше изменение ещё на месте» от «конвейер просто работает», и старая неисправность вернулась:Ваша первая камера этого не видела, потому что её сборка старше того изменения.
Исправлено: OpenIPC/ipctool#220 влит, поведение возвращено, и закреплено тестом, который повторяет ровно вашу последовательность. Сторона majestic — следом, ближайший nightly это получит.
Если хотите поднять вторую камеру до следующего nightly — та сборка, которую вы уже проверили сутками, по-прежнему правильная (команды выше).
devmem 0x120100F0показывает состояние сразу:0x00000011хорошо,0x00000010неисправность.Извините за лишний круг — и спасибо, что проверили вторую камеру, а не сочли, что первый результат всё покрывает. Только поэтому это нашлось за день.