Skip to main content

bayertap

A passive conformance tap for bayerlink links.

In a streaming netlist, a tap is a sink that observes a stream without stalling it. This is that concept as bench equipment: point it at any V4L2 capture device carrying a bayerlink source and it tells you whether the bytes survive — judged with the same published codec the source encoded with, so the two ends cannot disagree about what conformance means.

bayertap probe                          # which byte-lane permutation is this rig?
bayertap --lane-map 2,1,0 check --pattern counting     # every sample, judged
bayertap --via tunnel check --pattern counting          # through a cheap dongle
bayertap --from-file frame.npy check    # no hardware at all

Capture tiers

Tier Hardware Path Fidelity
Trusted TC358743 HDMI→CSI-2 bridge (~$25, the PiKVM part) on any Pi or Jetson --via direct, RGB888 byte-exact
Cheap MS2130S / MS2131S USB3 stick (~$15) on any Linux box --via direct, RGB24 byte-exact if the stick's pipeline is transparent — check answers that in minutes
Drawer MS2109-class USB2 stick --via tunnel, YUYV bit-exact at 1/6 capacity, via the luma tunnel — run the source with --luma-tunnel
Rejected any USB2 stick, direct MJPEG / starved YUYV physics: USB2 cannot carry uncompressed 1080p, and MJPEG is lossy. Refused in code, not just here

The drawer tier deserves its sentence: a $10 dongle you already own becomes a working conformance receiver today, because bayerlink's luma tunnel carries the unchanged container as grey levels with a pilot line the decoder learns the channel from. Slow, and completely sufficient for proving bytes.

The two bring-up commands

probe resolves the byte-lane permutation — which captured channel holds container byte k — by trying all six against the header's magic and CRC. Its output is directly the lane_map for this tool's check and for the FPGA-side receiver (np2hw.bayerlink_in). One command instead of a scope.

check --pattern X regenerates the pattern locally (patterns are pure functions — nothing travels out of band) and compares every sample, watches frame_seq for gaps, tolerates scanout repeats (protocol-legal), and exits nonzero on any discrepancy. Point CI at it if you like.

For the TC358743 tier, remember the bridge needs an EDID loaded (v4l2-ctl --set-edid) before it captures — and that EDID is leverage: it is what the source reads, so advertise only RGB 4:4:4 at your one mode and the source is steered into the only format the protocol accepts.

Status

Everything except the ioctl layer is proven off-target: struct sizes pinned against the kernel uapi, both decode paths (direct with lane maps, tunnel with pilot learning) tested end-to-end from files. First runs against real capture silicon are the bench session; the known-good device table starts there.

Licence

MIT.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bayertap-0.2.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bayertap-0.2.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file bayertap-0.2.0.tar.gz.

File metadata

  • Download URL: bayertap-0.2.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bayertap-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7a9f6ccfd6a08bd4d75e2548362da8082bd17cb5dddcfc7f4f660009d002224e
MD5 763ab38ba8385cbbfa457d707ba22730
BLAKE2b-256 a5a782af24ee287c6c8578984a26994a5c379e067acbe32f391ef2ed4c3c086e

See more details on using hashes here.

Provenance

The following attestation bundles were made for bayertap-0.2.0.tar.gz:

Publisher: publish.yml on bayerlink/bayertap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bayertap-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: bayertap-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bayertap-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5783ee3259709f2878adc4c579ecead99cb51ddf07caca4bc0da1a59f6a99f14
MD5 6c9c3f36c4e164cc8364acbdcf184407
BLAKE2b-256 85bf7f27c42a4f91e3a0bef85141d0490616e42e24acb32da7ebdb4f1afd9302

See more details on using hashes here.

Provenance

The following attestation bundles were made for bayertap-0.2.0-py3-none-any.whl:

Publisher: publish.yml on bayerlink/bayertap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page