Thanks for the reply ShaneCCC; I think I understand the issue.
For now, I’m working to get the camera’s single-frame mode functioning. I’ve removed all but one mode of the ov5693 devicetree, and configured that mode to have a HxW of 1024x1024, and pixel depth of 12bits:
active_w = "1024";
active_h = "1024";
mode_type = "bayer";
pixel_phase = "bggr";
csi_pixel_bit_depth = "12";
I tried to capture a frame using v4l2-ctl, also configuring these parameters there:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1024,height=1024,pixelformat=RG12 --stream-mmap --stream-count=1 --stream-to=csi.raw --verbose
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture:
Width/Height : 2592/1944
Pixel Format : 'RG12'
Field : None
Bytes per Line : 5184
Size Image : 10077696
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
VIDIOC_REQBUFS: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_STREAMON: failed: Remote I/O error
For some reason, v4l2-ctl prints out the video format differently; I’m not sure where this configuration is coming from (and it fails with an I/O error).
Also, during boot, I see some sort of a crash after the ov5693 is bound to the VI, see dmesg output (NULL pointer dereference); but the system still boots up, and I see a /dev/video0 device.
[ 7.557935] tegra-xusb 3610000.xhci: Firmware timestamp: 2019-07-24 05:47:34 UTC, Version: 60.06 release
[ 7.557962] tegra-xusb 3610000.xhci: xHCI Host Controller
[ 7.557973] tegra-xusb 3610000.xhci: new USB bus registered, assigned bus number 1
[ 7.558642] tegra-xusb 3610000.xhci: hcc params 0x0184ff25 hci version 0x110 quirks 0x00050810
[ 7.558683] tegra-xusb 3610000.xhci: irq 471, io mem 0x03610000
[ 7.558848] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 7.558851] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 7.558854] usb usb1: Product: xHCI Host Controller
[ 7.558856] usb usb1: Manufacturer: Linux 4.9.140-tegra xhci-hcd
[ 7.558858] usb usb1: SerialNumber: 3610000.xhci
[ 7.559329] hub 1-0:1.0: USB hub found
[ 7.559355] hub 1-0:1.0: 4 ports detected
[ 7.559640] tegra-xusb 3610000.xhci: xHCI Host Controller
[ 7.559646] tegra-xusb 3610000.xhci: new USB bus registered, assigned bus number 2
[ 7.559650] tegra-xusb 3610000.xhci: Host supports USB 3.1 Enhanced SuperSpeed
[ 7.559787] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[ 7.559790] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 7.559793] usb usb2: Product: xHCI Host Controller
[ 7.559796] usb usb2: Manufacturer: Linux 4.9.140-tegra xhci-hcd
[ 7.559798] usb usb2: SerialNumber: 3610000.xhci
[ 7.560105] hub 2-0:1.0: USB hub found
[ 7.560126] hub 2-0:1.0: 4 ports detected
[ 7.631639] tegra-ivc ivc-bc00000.rtcpu: region 0: iova=0xbfee0000-0xbfefffff size=131072
[ 7.631960] tegra-ivc ivc-bc00000.rtcpu:echo@0: echo: ver=0 grp=1 RX[16x64]=0x1000-0x1480 TX[16x64]=0x1480-0x1900
[ 7.632182] tegra-ivc ivc-bc00000.rtcpu:dbg@1: dbg: ver=0 grp=1 RX[1x384]=0x1900-0x1b00 TX[1x384]=0x1b00-0x1d00
[ 7.632305] tegra-ivc ivc-bc00000.rtcpu:dbg@2: dbg: ver=0 grp=1 RX[1x8192]=0x1d00-0x3d80 TX[1x8192]=0x3d80-0x5e00
[ 7.632586] tegra-ivc ivc-bc00000.rtcpu:ivccontrol@3: ivccontrol: ver=0 grp=1 RX[64x320]=0x5e00-0xae80 TX[64x320]=0xae80-0xff00
[ 7.632651] tegra-ivc ivc-bc00000.rtcpu:ivccapture@4: ivccapture: ver=0 grp=1 RX[512x64]=0xff00-0x17f80 TX[512x64]=0x17f80-0x20000
[ 7.632887] tegra186-cam-rtcpu bc00000.rtcpu: using cam RTCPU IRQ (69)
[ 7.632890] tegra186-cam-rtcpu bc00000.rtcpu: tegra_camrtc_mon_create is successful
[ 7.633715] tegra186-cam-rtcpu bc00000.rtcpu: firmware version cpu=rce cmd=5 sha1=cf2bef3ad10e437272857b76308abef8ffb80bda
[ 7.634124] gpio tegra-gpio wake67 for gpio=48(G:0)
[ 7.634182] gpio tegra-gpio-aon wake29 for gpio=36(EE:4)
[ 7.634321] input: gpio-keys as /devices/gpio-keys/input/input5
[ 7.664189] usb usb1: usb_suspend_both: status 0
[ 7.667219] tegra_rtc c2a0000.rtc: setting system clock to 2020-02-25 23:18:52 UTC (1582672732)
[ 7.667568] mmcblk mmc0:0001: Card claimed for testing.
[ 7.707504] bpmp: mounted debugfs mirror
[ 7.713342] vdd-1v8-cvb: disabling
[ 7.713346] vdd-1v8-sd: disabling
[ 7.713349] vdd-epb-1v0: disabling
[ 7.713351] avdd-cam-2v8: disabling
[ 7.713353] vdd-sata-1v5: disabling
[ 7.713355] vdd-3v3-slt: disabling
[ 7.713357] vdd-fan: disabling
[ 7.713359] vdd_sys_en: disabling
[ 7.713365] ALSA device list:
[ 7.713368] #0: tegra-hda-galen-t194 at 0x3518000 irq 68
[ 7.713370] #1: tegra-snd-t19x-mobile-rt565x
[ 7.915674] tegradc 15210000.nvdisplay: vblank syncpt # 15 for dc 1
[ 7.921415] tegradc 15210000.nvdisplay: vpulse3 syncpt # 16 for dc 1
[ 7.936555] tegradc 15210000.nvdisplay: probed
[ 7.936883] tegradc 15210000.nvdisplay: fb registered
[ 7.941337] hpd: state 7 (Takeover from bootloader), hpd 0, pending_hpd_evt 1
[ 7.944238] tegradc 15220000.nvdisplay: disp2 connected to head2->/host1x/sor1
[ 7.944271] tegradc 15220000.nvdisplay: parse_dp_settings: No dp-lt-settings node
[ 7.944323] tegradc 15220000.nvdisplay: DT parsed successfully
[ 7.944356] tegradc 15220000.nvdisplay: Display dc.ffffff80114d0000 registered with id=2
[ 7.944491] tegradc 15220000.nvdisplay: vblank syncpt # 17 for dc 2
[ 7.944496] tegradc 15220000.nvdisplay: vpulse3 syncpt # 18 for dc 2
[ 7.952917] tegradc 15220000.nvdisplay: probed
[ 7.990711] hpd: switching from state 7 (Takeover from bootloader) to state 0 (Reset)
[ 7.990734] hpd: state 0 (Reset), hpd 0, pending_hpd_evt 0
[ 8.003761] tegradc 15220000.nvdisplay: fb registered
[ 8.003764] tegradc 15210000.nvdisplay: blank - powerdown
[ 8.006980] hpd: state 7 (Takeover from bootloader), hpd 0, pending_hpd_evt 1
[ 8.006983] hpd: switching from state 7 (Takeover from bootloader) to state 0 (Reset)
[ 8.006988] hpd: state 0 (Reset), hpd 0, pending_hpd_evt 0
[ 8.008501] Freeing unused kernel memory: 8576K
[ 8.039185] extcon-disp-state external-connection:disp-state: cable 44 state 0 already set.
[ 8.039189] tegradc 15220000.nvdisplay: blank - powerdown
[ 8.039203] Extcon DP: HPD disabled
[ 8.039208] hpd: hpd_switch 0
[ 8.039211] hpd: switching from state 0 (Reset) to state 1 (Check Plug)
[ 8.039222] hpd: state 1 (Check Plug), hpd 0, pending_hpd_evt 0
[ 8.039226] hpd: switching from state 1 (Check Plug) to state 3 (Disabled)
[ 8.079775] extcon-disp-state external-connection:disp-state: cable 44 state 0 already set.
[ 8.079789] Extcon DP: HPD disabled
[ 8.079798] hpd: hpd_switch 0
[ 8.079800] hpd: switching from state 0 (Reset) to state 1 (Check Plug)
[ 8.079811] hpd: state 1 (Check Plug), hpd 0, pending_hpd_evt 0
[ 8.079815] hpd: switching from state 1 (Check Plug) to state 3 (Disabled)
[ 8.139612] Root device found: mmcblk0p1
[ 8.141036] Found dev node: /dev/mmcblk0p1
[ 8.168332] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
[ 8.169335] Rootfs mounted over mmcblk0p1
[ 8.187118] Switching from initrd to actual rootfs
[ 8.330755] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 8.334676] cgroup: cgroup2: unknown option "nsdelegate"
[ 8.343720] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[ 8.344605] systemd[1]: Detected architecture arm64.
[ 8.354390] systemd[1]: Set hostname to <xavier01>.
[ 8.436771] systemd[1]: File /lib/systemd/system/systemd-journald.service:35 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
[ 8.437058] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
[ 8.573690] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.576934] systemd[1]: Created slice System Slice.
[ 8.577638] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.577898] systemd[1]: Listening on udev Kernel Socket.
[ 8.578181] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.578305] systemd[1]: Reached target User and Group Name Lookups.
[ 8.578876] systemd[1]: Listening on Syslog Socket.
[ 8.579286] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 8.636172] gpio tegra-gpio wake44 for gpio=192(Y:0)
[ 8.667168] EXT4-fs (mmcblk0p1): re-mounted. Opts: (null)
[ 8.993908] systemd-journald[2469]: Received request to flush runtime journal from PID 1
[ 9.110286] nvgpu: 17000000.gv11b nvgpu_nvhost_syncpt_init:291 [INFO] syncpt_unit_base 60000000 syncpt_unit_size 400000 size 1000
[ 9.502131] using random self ethernet address
[ 9.502227] using random host ethernet address
[ 9.536950] ov5693 2-0036: probing v4l2 sensor.
[ 9.536957] ov5693 2-0036: TEST!
[ 9.537678] ov5693 2-0036: tegracam sensor driver:ov5693_v2.0.6
[ 9.548722] tegra194-vi5 15c10000.vi: subdev ov5693 2-0036 bound
[ 9.549173] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 9.549320] Mem abort info:
[ 9.549368] ESR = 0x96000005
[ 9.549428] Exception class = DABT (current EL), IL = 32 bits
[ 9.549521] SET = 0, FnV = 0
[ 9.549572] EA = 0, S1PTW = 0
[ 9.549622] Data abort info:
[ 9.549669] ISV = 0, ISS = 0x00000005
[ 9.549733] CM = 0, WnR = 0
[ 9.549786] user pgtable: 4k pages, 39-bit VAs, pgd = ffffffc3d74a2000
[ 9.549888] [0000000000000000] *pgd=0000000000000000, *pud=0000000000000000
[ 9.550011] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[ 9.550108] Modules linked in: ov5693(+) spidev nvgpu binfmt_misc bluedroid_pm ip_tables x_tables
[ 9.550298] CPU: 0 PID: 4381 Comm: systemd-udevd Not tainted 4.9.140-tegra #1
[ 9.551810] Hardware name: Jetson-AGX (DT)
[ 9.556013] task: ffffffc3d965c600 task.stack: ffffffc3d74c4000
[ 9.561882] PC is at camera_common_g_fmt+0x44/0xc8
[ 9.566777] LR is at camera_common_g_fmt+0x30/0xc8
[ 9.571678] pc : [<ffffff8008b45d04>] lr : [<ffffff8008b45cf0>] pstate: 40400045
[ 9.579204] sp : ffffffc3d74c76a0
[ 9.582446] x29: ffffffc3d74c76a0 x28: 0000000000000018
[ 9.588211] x27: 0000000000000175 x26: 0000000000000002
[ 9.593811] x25: 0000000000000038 x24: 0000000000000001
[ 9.599411] x23: ffffffc3dddcf050 x22: ffffffc3dddcf050
[ 9.604836] x21: ffffffc3dddcf018 x20: 0000000000000000
[ 9.609999] x19: ffffffc3d74c7770 x18: 0000000000000001
[ 9.615773] x17: 0000007fb22511d0 x16: ffffff800825b9a8
[ 9.621290] x15: ffffffffffffffff x14: ffffffc3d74c76a0
[ 9.626973] x13: ffffffc3d74c75a5 x12: ffffffffffffffff
[ 9.632327] x11: ffffffc3d74c7560 x10: ffffffc3d74c7560
[ 9.638174] x9 : 0000000000000002 x8 : 0000000000000002
[ 9.643948] x7 : ffffff8008fb6e08 x6 : 0000000000000090
[ 9.649206] x5 : 000000000000008d x4 : 0000000000000001
[ 9.654543] x3 : 0000000000010000 x2 : 0000000000000000
[ 9.660136] x1 : ffffffc3d965c600 x0 : 0000000000000001
[ 9.666620] Process systemd-udevd (pid: 4381, stack limit = 0xffffffc3d74c4000)
[ 9.673787] Call trace:
[ 9.676160] [<ffffff8008b45d04>] camera_common_g_fmt+0x44/0xc8
[ 9.681754] [<ffffff8008b4a520>] v4l2sd_get_fmt+0x28/0x38
[ 9.686832] [<ffffff8008b3497c>] tegra_channel_fmts_bitmap_init+0x13c/0x268
[ 9.693305] [<ffffff8008b3614c>] tegra_channel_init_subdevices+0x17c/0x790
[ 9.699954] [<ffffff8008b37370>] tegra_vi_graph_notify_complete+0x2e8/0x6e0
[ 9.706344] [<ffffff8008b1ab6c>] v4l2_async_test_notify+0x104/0x120
[ 9.712206] [<ffffff8008b1ada8>] v4l2_async_register_subdev+0x88/0x100
[ 9.718334] [<ffffff8008b4a334>] tegracam_v4l2subdev_register+0xf4/0x1a0
[ 9.724732] [<ffffff80011bca4c>] ov5693_probe+0x20c/0x4e8 [ov5693]
[ 9.730493] [<ffffff8008ae1534>] i2c_device_probe+0x144/0x258
[ 9.736268] [<ffffff800877e418>] driver_probe_device+0xd8/0x408
[ 9.742127] [<ffffff800877e824>] __driver_attach+0xdc/0x128
[ 9.747743] [<ffffff800877be94>] bus_for_each_dev+0x5c/0xa8
[ 9.753415] [<ffffff800877dc18>] driver_attach+0x30/0x40
[ 9.758839] [<ffffff800877d64c>] bus_add_driver+0x20c/0x2a8
[ 9.764440] [<ffffff800877f75c>] driver_register+0x6c/0x110
[ 9.770219] [<ffffff8008ae1c24>] i2c_register_driver+0x4c/0xb0
[ 9.776191] [<ffffff80011c40c0>] ov5693_i2c_driver_init+0x18/0x30 [ov5693]
[ 9.783253] [<ffffff8008083afc>] do_one_initcall+0x44/0x130
[ 9.788771] [<ffffff80081c2ddc>] do_init_module+0x64/0x1a8
[ 9.794455] [<ffffff80081581dc>] load_module+0x10a4/0x12d8
[ 9.799877] [<ffffff80081586c0>] SyS_finit_module+0xd8/0xf0
[ 9.805394] [<ffffff800808391c>] __sys_trace_return+0x0/0x4
[ 9.807344] random: crng init done
[ 9.807348] random: 7 urandom warning(s) missed due to ratelimiting
[ 9.820707] ---[ end trace 76774f2ddcb176e4 ]---
[ 10.426792] Mass Storage Function, version: 2009/09/11
[ 10.426912] LUN: removable file: (no medium)
[ 10.432159] using random self ethernet address
[ 10.432267] using random host ethernet address
[ 10.468427] rndis0: HOST MAC ea:a9:92:fb:a8:78
[ 10.468854] rndis0: MAC ea:a9:92:fb:a8:79
[ 10.471408] usb0: HOST MAC ea:a9:92:fb:a8:7a
[ 10.471544] usb0: MAC ea:a9:92:fb:a8:7b
[ 10.471634] tegra-xudc-new 3550000.xudc: exiting ELPG
[ 10.472865] tegra-xudc-new 3550000.xudc: exiting ELPG done
[ 10.473013] tegra-xudc-new 3550000.xudc: ep 0 (type: 0, dir: out) enabled
[ 10.473166] tegra-xudc-new 3550000.xudc: entering ELPG
[ 10.473981] tegra-xudc-new 3550000.xudc: entering ELPG done
[ 10.474110] tegra-xudc-new 3550000.xudc: exiting ELPG
[ 10.475733] tegra-xudc-new 3550000.xudc: exiting ELPG done
[ 10.475876] tegra-xudc-new 3550000.xudc: entering ELPG
[ 10.476207] tegra-xudc-new 3550000.xudc: entering ELPG done
[ 10.482391] l4tbr0: port 1(rndis0) entered blocking state
[ 10.482515] l4tbr0: port 1(rndis0) entered disabled state
[ 10.482802] device rndis0 entered promiscuous mode
[ 10.489195] IPv6: ADDRCONF(NETDEV_UP): rndis0: link is not ready
[ 10.494580] l4tbr0: port 2(usb0) entered blocking state
[ 10.494698] l4tbr0: port 2(usb0) entered disabled state
[ 10.494974] device usb0 entered promiscuous mode
[ 10.499536] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[ 11.040485] nvgpu: 17000000.gv11b tpc_pg_mask_store:843 [INFO] no value change, same mask already set
[ 11.191549] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 11.333056] gpio tegra-gpio wake20 for gpio=52(G:4)
[ 11.345213] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 11.805834] zram: Added device: zram0
[ 11.809071] zram: Added device: zram1
[ 11.809907] zram: Added device: zram2
[ 11.810876] zram: Added device: zram3
[ 11.811435] zram: Added device: zram4
[ 11.812657] zram: Added device: zram5
[ 11.813604] zram: Added device: zram6
[ 11.814187] zram: Added device: zram7
[ 11.830462] zram0: detected capacity change from 0 to 1037008896
[ 11.848196] Adding 1012700k swap on /dev/zram0. Priority:5 extents:1 across:1012700k SS
[ 11.850800] zram1: detected capacity change from 0 to 1037008896
[ 11.859731] Adding 1012700k swap on /dev/zram1. Priority:5 extents:1 across:1012700k SS
[ 11.861918] zram2: detected capacity change from 0 to 1037008896
[ 11.870708] Adding 1012700k swap on /dev/zram2. Priority:5 extents:1 across:1012700k SS
[ 11.873282] zram3: detected capacity change from 0 to 1037008896
[ 11.883433] Adding 1012700k swap on /dev/zram3. Priority:5 extents:1 across:1012700k SS
[ 11.886079] zram4: detected capacity change from 0 to 1037008896
[ 11.895516] Adding 1012700k swap on /dev/zram4. Priority:5 extents:1 across:1012700k SS
[ 11.897943] zram5: detected capacity change from 0 to 1037008896
[ 11.907023] Adding 1012700k swap on /dev/zram5. Priority:5 extents:1 across:1012700k SS
[ 11.909448] zram6: detected capacity change from 0 to 1037008896
[ 11.916561] Wake76 for irq=199
[ 11.916641] Wake77 for irq=199
[ 11.916695] Wake78 for irq=199
[ 11.916749] Wake79 for irq=199
[ 11.916801] Wake80 for irq=199
[ 11.916853] Wake81 for irq=199
[ 11.916907] Wake82 for irq=199
[ 11.916991] tegra-xusb 3610000.xhci: Upgrade port 0 to USB3.0
[ 11.917092] tegra-xusb 3610000.xhci: Upgrade port 1 to USB3.0
[ 11.918966] Adding 1012700k swap on /dev/zram6. Priority:5 extents:1 across:1012700k SS
[ 11.921323] zram7: detected capacity change from 0 to 1037008896
[ 11.930999] Adding 1012700k swap on /dev/zram7. Priority:5 extents:1 across:1012700k SS
[ 12.148085] usb 1-1: new high-speed USB device number 2 using tegra-xusb
[ 12.169930] usb 1-1: New USB device found, idVendor=2109, idProduct=2812
[ 12.170068] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 12.170185] usb 1-1: Product: USB2.0 Hub
[ 12.170269] usb 1-1: Manufacturer: VIA Labs, Inc.
[ 12.171241] hub 1-1:1.0: USB hub found
[ 12.171566] hub 1-1:1.0: 4 ports detected
[ 12.288418] usb 2-3: new SuperSpeed USB device number 2 using tegra-xusb
[ 12.320108] usb 1-1: usb_suspend_both: status 0
[ 12.320300] usb usb1: usb_suspend_both: status 0
[ 12.540635] usb 2-3: New USB device found, idVendor=2109, idProduct=0812
[ 12.540783] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 12.540906] usb 2-3: Product: USB3.0 Hub
[ 12.540997] usb 2-3: Manufacturer: VIA Labs, Inc.
[ 12.547339] hub 2-3:1.0: USB hub found
[ 12.547606] hub 2-3:1.0: 4 ports detected
[ 12.742847] tegradc 15200000.nvdisplay: blank - powerdown
[ 12.742969] tegradc 15210000.nvdisplay: blank - powerdown
[ 12.743061] tegradc 15220000.nvdisplay: blank - powerdown
[ 12.936375] usb 2-3.3: new SuperSpeed USB device number 3 using tegra-xusb
[ 12.957512] usb 2-3.3: New USB device found, idVendor=0bda, idProduct=8153
[ 12.957655] usb 2-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[ 12.957773] usb 2-3.3: Product: USB 10/100/1000 LAN
[ 12.957852] usb 2-3.3: Manufacturer: Realtek
[ 12.957937] usb 2-3.3: SerialNumber: 000002
[ 13.052715] usb 2-3.3: reset SuperSpeed USB device number 3 using tegra-xusb
[ 13.121181] r8152 2-3.3:1.0 eth1: v2.09.00 (2017/08/21)
[ 13.121301] r8152 2-3.3:1.0 eth1: This product is covered by one or more of the following patents:
US6,570,884, US6,115,776, and US6,327,625.
Thank you for any suggestions or comments.