SC206E adding AR0234CS camera sensor driver

We are using SC206E-EM module in our custom HW board.
We have connected AR0234CS 2-lanes MIPI CSI2 camera sensor board on CSI1 lines (similar pinout as J0402 Front cam for Smart_EVB_G5).

Currently I am referring ‘FTP\Documents\Software\Camera\Quectel_SC206E_Series_Linux_Camera_Driver_Development_Guide_V1.1.pdf’ document for getting started.

Can you please help to answer following queries to expedite my driver development efforts:

  1. Is it possible to add a new custom camera sensor driver into existing ‘qti-robotics-med-image’ linux image? or it’s a qcom propriety thing to add a custom camera sensor driver support?
  2. If custom driver addition is possible, I am planning to follow following steps as per the user guide.

Yes, it is possible to add custom drivers, they don’t necessarily have to be qcom proprietary.

Hi Keven,

Thanks for your quick reply.
As I have shared in previous post, I have connected AR0234CS 2-lanes MIPI CSI2 camera sensor board on CSI1 lines (similar pinout as J0402 Front cam for Smart_EVB_G5). Please see following image for your reference.

I belive in the default EVK linux src, “quec_s5k4h7_2lane” camera sensor is connected on CSI1 lines. And “quec_s5k4h7_2lane” is also enabled in the build image.
But i didn’t see any I2C activity on CAM0_I2C. I believe at least there should be some activity like reading the chip ID. So do i need to execute any additional command to probe the “quec_s5k4h7_2lane” camera sensor?
Additionally i observed that, during linux booting, I2C SDA and SCL seems high but after ~37 sec, I got following messages on debug port and then I2C SDA and SCL lines goes to 0V.
Also, ‘cci-master = <0>;’ in ‘scuba-camera-sensor-idp.dtsi’ for ‘/* CAM1 *//Front J0402/qcom,cam-sensor1’

[ 37.864441] cam_iovdd1v8: disabling
[ 37.868008] cam_avdd2v8: disabling
[ 37.871982] cam_vdig1v2: disabling
[ 37.875615] cam_front_vdig1v2: disabling
[ 37.879811] vreg_usb_3p1: disabling

bootlog.txt (55.3 KB)
I also tired modifying ‘s5k4h7_2lane_sensor.xml’ with I2C address and chip id address for AR0234. Still no activity on CAM0_I2C.

<slaveInfo>
    <!--Name of the sensor -->
    <sensorName>s5k4h7_2lane</sensorName>
        <!--8-bit or 10-bit write slave address -->
    <slaveAddress>0x20</slaveAddress>
        <!--Register address / data size in bytes -->
    <regAddrType range="[1,4]">2</regAddrType>
        <!--Register address / data size in bytes -->
    <regDataType range="[1,4]">2</regDataType>
        <!--Register address for sensor Id -->
    <sensorIdRegAddr>0x3000</sensorIdRegAddr>
        <!--Sensor Id -->
    <sensorId>0x0A56</sensorId>
        <!--Mask for sensor id. Sensor Id may only be few bits -->

Please suggest method to get i2c activity on CAM0_I2C

@keven.wu-Q ,

As per the 'Quectel_SC206E_Series_Linux_Camera_Driver_Dedebug print probe success for my AR0234 camera sensor.

[ 98.477042] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 876 Probe success,slot:1,slave_addr:0x20,sensor_id:0xa56

I did the following changes:
As my camera is connected on the CSI1 lines (similar pinout as J0402 Front cam for Smart_EVB_G5), So, I modified I2C slave address and chip ID address and value in ‘src/vendor/qcom/proprietary/chi-cdk/oem/qcom/sensor/quec_s5k4h7_2lane/s5k4h7_2lane_sensor.xml’ file and able to get probe success.

But unable to start video streaming.
I run following commands:

gst-launch-1.0 -e qtiqmmfsrc camera=1 name=qmmf ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! waylandsink x=0 y=0 width=640 height=480

Following are the Error Logs>

root@qrbx210-rbx:~# gst-launch-1.0 -e qtiqmmfsrc camera=1 name=qmmf ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! waylandsink x=0 y=0 width=640 height=480

(gst-plugin-scanner:2528): GLib-GObject-CRITICAL **: 08:01:43.359: g_param_spec_internal: assertion ‘!(flags & G_PARAM_STATIC_NAME) || is_canonical (name)’ failed

(gst-plugin-scanner:2528): GLib-GObject-CRITICAL **: 08:01:43.360: g_param_spec_internal: assertion ‘!(flags & G_PARAM_STATIC_NAME) || is_canonical (name)’ failed
[ 97.548653] msm_vidc: high: 00000001: …d: Opening video instance: 0000000000000000, 1
[ 97.559678] msm_vidc: high: 00000001: …d: Closed video instance: 0000000000000000
[ 97.567777] msm_vidc: high: 00000001: …e: Opening video instance: 0000000000000000, 0
[ 97.578065] msm_vidc: high: 00000001: …e: Closed video instance: 0000000000000000
[ 97.586194] CAM_ERR: CAM-CPAS: cam_cpas_subdev_ioctl: 749 Invalid command -2140645888 for CPAS!
[ 97.595358] CAM_ERR: CAM-CORE: cam_subdev_ioctl: 78 Invalid command -2140645888 for cam-isp
[ 97.604344] CAM_ERR: CAM-CSIPHY: cam_csiphy_subdev_ioctl: 134 Wrong ioctl : -2140645888
[ 97.612758] CAM_ERR: CAM-CSIPHY: cam_csiphy_subdev_ioctl: 134 Wrong ioctl : -2140645888
[ 97.621272] CAM_ERR: CAM-SENSOR: cam_sensor_subdev_ioctl: 101 Invalid ioctl cmd: -2140645888
[ 97.630162] CAM_ERR: CAM-CORE: cam_subdev_ioctl: 78 Invalid command -2140645888 for cam-ope
[ 97.639136] CAM_INFO: CAM-SMMU: cam_smmu_need_force_alloc_cached: 383 force_cache_allocs=0
[ 97.647915] CAM_WARN: CAM-CRM: cam_req_mgr_close: 195 release invoked associated userspace process has died, open_cnt: 1
[ 97.658936] CAM_WARN: CAM-CPAS: __cam_cpas_subdev_close: 706 device already closed, open_cnt: 0
GBM_INFO::msmgbm_mapper(160)::gbm mapper instantiated

gbm_create_device(225): Info: backend name is: msm_drm
Setting pipeline to PAUSED …
gbm_create_device(225): Info: backend name is: msm_drm
[ 97.966728] CAM_INFO: CAM-SMMU: cam_smmu_need_force_alloc_cached: 383 force_cache_allocs=0
[ 98.296912] CAM_ERR: CAM-CCI: cam_cci_irq: 304 Base:0000000000000000,cci: 0, M0_Q1 NACK ERROR: 0x10000000
[ 98.307101] CAM_ERR: CAM-CCI: cam_cci_read: 1389 ERROR with Slave 0x40:
[ 98.313873] CAM_ERR: CAM-CCI: cam_cci_read_bytes_v_1_2: 1640 failed to read rc:-22
[ 98.321803] CAM_ERR: CAM-SENSOR: cam_cci_i2c_read: 35 rc = -22
[ 98.327864] CAM_WARN: CAM-SENSOR: cam_sensor_match_id: 774 read id: 0x0 expected id 0x4308:
[ 98.336440] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 861 Not a hot plug sensor, match sensor id failed
[ 98.376369] CAM_ERR: CAM-SENSOR: cam_sensor_subdev_ioctl: 90 Failed in Driver cmd: -19
[ 98.477042] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 876 Probe success,slot:1,slave_addr:0x20,sensor_id:0xa56
[ 98.841409] CAM_WARN: CAM-CRM: cam_req_mgr_close: 195 release invoked associated userspace process has died, open_cnt: 1
[ 98.852510] CAM_WARN: CAM-CPAS: __cam_cpas_subdev_close: 706 device already closed, open_cnt: 0
[ 98.861970] binder: release 2524:2526 transaction 63 in, still active
[ 98.868496] binder: send failed reply for transaction 63 to 2527:2527
ERROR: Pipeline doesn’t want to pause.
ERROR: from element /GstPipeline:pipeline0/GstQmmfSrc:qmmf: Camera service has died !
Additional debug info:
/home/qcm2290_linux_r60_r004-SC206E_rl/build-qti-distro-rb-debug/tmp-glibc/work/aarch64-oe-linux/gstreamer1.0-plugins-qti-oss-qmmfsrc/1.0-r0/gst-plugin-qmmfsrc/qmmf_source.c(499): qmmfsrc_event_callback (): /GstPipeline:pipeline0/GstQmmfSrc:qmmf
Setting pipeline to NULL …
Freeing pipeline …
GBM_INFO::~msmgbm_mapper(167)::gbm mapper de-instantiated

Following are the logs in EVK for Front CAM(s5k4h7_2lane_sensor) after successful prob.

[ 1319.374779] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 955 CAM_ACQUIRE_DEV Success, sensor_id:0x487b,sensor_slave_addr:0x5a
[ 1319.581661] CAM_INFO: CAM-OPE: cam_ope_mgr_acquire_hw: 2782 OPE: 0 acquire succesfull rc 0
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock

In my case, I am not getting “CAM_ACQUIRE_DEV Success” for my camera sensor.
And if i searched the source this print is coming from the ‘camxcslhwinternaleeprom.cpp’ file.

Can you suggest me to get similar CAM_ACQUIRE_DEV Success print for my camera also?
Also, I didn’t observe any I2C activity after the read Chip ID command. So did i miss any other configuration?

Please provide a complete schematic
I need to confirm whether your development board has only one camera
If there are two cameras sharing this specified PHY interface, isComboMode is configured to 1 by default, otherwise it is set to 0. You need to provide the configuration of quec_s5k4h7_2lane_module.xml
Path:
qcm2290_linux_r60_r004\src\vendor\qcom\proprietary\chi-cdk\oem\qcom\module

@keven.wu-Q
Thanks for your reply.
My custom HW has only 1 camera and that is on CSI1.
Please find camera related section of my custom HW from Link

As you have suggested, I tried setting ‘isComboMode’ to ‘0’ in ‘quec_s5k4h7_2lane_module.xml’

But still getting the similar error with just one difference. Not getting following error.

ERROR: from element /GstPipeline:pipeline0/GstQmmfSrc:qmmf: Camera service has died !
Additional debug info:
/home/qcm2290_linux_r60_r004-SC206E_rl/build-qti-distro-rb-debug/tmp-glibc/work/aarch64-oe-linux/gstreamer1.0-plugins-qti-oss-qmmfsrc/1.0-r0/gst-plugin-qmmfsrc/qmmf_source.c(499): qmmfsrc_event_callback (): /GstPipeline:pipeline0/GstQmmfSrc:qmmf

and also not observed any I2C activity other that reading chip ID.

Following are the complete error log for your reference.

root@qrbx210-rbx:~# gst-launch-1.0 -e qtiqmmfsrc camera=1 name=qmmf ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! waylandsink x=0 y=0 width=640 height=480

(gst-plugin-scanner:2525): GLib-GObject-CRITICAL **: 08:02:24.871: g_param_spec_internal: assertion ‘!(flags & G_PARAM_STATIC_NAME) || is_canonical (name)’ failed

(gst-plugin-scanner:2525): GLib-GObject-CRITICAL **: 08:02:24.872: g_param_spec_internal: assertion ‘!(flags & G_PARAM_STATIC_NAME) || is_canonical (name)’ failed
[ 139.309500] msm_vidc: high: 00000001: …d: Opening video instance: 0000000000000000, 1
[ 139.328090] subsys-pil-tz 5ab0000.qcom,venus: venus: loading from 0x0000000051400000 to 0x0000000051900000
[ 139.378197] subsys-pil-tz 5ab0000.qcom,venus: venus: Brought out of reset
[ 139.385096] subsys-pil-tz: subsys_powerup(): pil_boot is successful from venus and waiting for error ready
[ 139.432962] msm_vidc: high: 00000001: …d: Closed video instance: 0000000000000000
[ 139.441244] msm_vidc: high: 00000001: …e: Opening video instance: 0000000000000000, 0
[ 139.454055] msm_vidc: high: 00000001: …e: Closed video instance: 0000000000000000
[ 139.462280] CAM_ERR: CAM-CPAS: cam_cpas_subdev_ioctl: 749 Invalid command -2140645888 for CPAS!
[ 139.471815] CAM_ERR: CAM-CORE: cam_subdev_ioctl: 78 Invalid command -2140645888 for cam-isp
[ 139.480882] CAM_ERR: CAM-CSIPHY: cam_csiphy_subdev_ioctl: 134 Wrong ioctl : -2140645888
[ 139.489698] CAM_ERR: CAM-CSIPHY: cam_csiphy_subdev_ioctl: 134 Wrong ioctl : -2140645888
[ 139.498289] CAM_ERR: CAM-SENSOR: cam_sensor_subdev_ioctl: 101 Invalid ioctl cmd: -2140645888
[ 139.507540] CAM_ERR: CAM-CORE: cam_subdev_ioctl: 78 Invalid command -2140645888 for cam-ope
[ 139.516646] CAM_INFO: CAM-SMMU: cam_smmu_need_force_alloc_cached: 383 force_cache_allocs=0
[ 139.525636] CAM_WARN: CAM-CRM: cam_req_mgr_close: 195 release invoked associated userspace process has died, open_cnt: 1
[ 139.536719] CAM_WARN: CAM-CPAS: __cam_cpas_subdev_close: 706 device already closed, open_cnt: 0
GBM_INFO::msmgbm_mapper(160)::gbm mapper instantiated

gbm_create_device(225): Info: backend name is: msm_drm
Setting pipeline to PAUSED …
gbm_create_device(225): Info: backend name is: msm_drm
[ 139.985076] CAM_INFO: CAM-SMMU: cam_smmu_need_force_alloc_cached: 383 force_cache_allocs=0
[ 140.404092] type=1325 audit(146.591:5): table=mangle family=2 entries=6
[ 140.411074] type=1325 audit(146.599:6): table=mangle family=2 entries=8
[ 140.418000] type=1325 audit(146.607:7): table=mangle family=10 entries=6
[ 140.425146] type=1325 audit(146.615:8): table=mangle family=10 entries=8
[ 140.432190] type=1325 audit(146.619:9): table=mangle family=2 entries=9
[ 140.439007] type=1325 audit(146.623:10): table=mangle family=2 entries=11
[ 140.446101] type=1325 audit(146.631:11): table=mangle family=10 entries=9
[ 140.453172] type=1325 audit(146.639:12): table=mangle family=10 entries=11
[ 140.543356] CAM_ERR: CAM-CCI: cam_cci_irq: 304 Base:0000000000000000,cci: 0, M0_Q1 NACK ERROR: 0x10000000
[ 140.553462] CAM_ERR: CAM-CCI: cam_cci_read: 1389 ERROR with Slave 0x40:
[ 140.560381] CAM_ERR: CAM-CCI: cam_cci_read_bytes_v_1_2: 1640 failed to read rc:-22
[ 140.568355] CAM_ERR: CAM-SENSOR: cam_cci_i2c_read: 35 rc = -22
[ 140.574361] CAM_WARN: CAM-SENSOR: cam_sensor_match_id: 774 read id: 0x0 expected id 0x4308:
[ 140.582841] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 861 Not a hot plug sensor, match sensor id failed
[ 140.624128] CAM_ERR: CAM-SENSOR: cam_sensor_subdev_ioctl: 90 Failed in Driver cmd: -19
[ 140.719423] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 876 Probe success,slot:1,slave_addr:0x20,sensor_id:0xa56
[ 141.114622] CAM_WARN: CAM-CRM: cam_req_mgr_close: 195 release invoked associated userspace process has died, open_cnt: 1
[ 141.125656] CAM_WARN: CAM-CPAS: __cam_cpas_subdev_close: 706 device already closed, open_cnt: 0
[ 141.134968] binder: release 1896:1923 transaction 45 in, still active
[ 141.141523] binder: send failed reply for transaction 45 to 2524:2524
ERROR: Pipeline doesn’t want to pause.
Setting pipeline to NULL …
Freeing pipeline …
GBM_INFO::~msmgbm_mapper(167)::gbm mapper de-instantiated

Is there any details log level available in CAMERA driver, So this will help to debug more.

LaneAssign also needs to be reconfigured. Please check your schematic data channel mapping and the connection of the MIPI data channel of the SC206E series module, and then configure according to the following parameters.

@keven.wu-Q

In my ‘quec_s5k4h7_2lane_module.xml’, I set the following

laneAssign>0x10

Which seems ok for my HW board as CSI1 LAN1 from SC206E is connected to DATA1 of camera sensor and CSI1 LAN0 is connected to DATA0 of camera sensor.

Still getting the same error log.

One thing i am observing only 2 i2C request when i run following commands. Why I am not observing other I2C requests?

gst-launch-1.0 -e qtiqmmfsrc camera=1 name=qmmf ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! waylandsink x=0 y=0 width=640 height=480


1st I2C: W0x20_NAK, W0x20_NAK, W0x20_NAK, W0x20_NAK
2nd I2C: W0x10_ACK, 0x30_ACK, 0x00_ACK, R0x10_ACK, 0x0A_ACK, 0X56_ACK

@keven.wu-Q
One more query,

Why camera driver truing to send command for 0x40 (8-bit, 0x20:7-bit) address which is for quec_hi843 sensor. And i have only enabled ‘quec_s5k4h7_2lane’ keeping other sensor disabled from
src/vendor/qcom/proprietary/chi-cdk/core/build/linuxembedded/CMakeLists.txt
src/vendor/qcom/proprietary/chi-cdk/configs/product.mk

[ 140.553462] CAM_ERR: CAM-CCI: cam_cci_read: 1389 ERROR with Slave 0x40:
[ 140.560381] CAM_ERR: CAM-CCI: cam_cci_read_bytes_v_1_2: 1640 failed to read rc:-22
[ 140.568355] CAM_ERR: CAM-SENSOR: cam_cci_i2c_read: 35 rc = -22
[ 140.574361] CAM_WARN: CAM-SENSOR: cam_sensor_match_id: 774 read id: 0x0 expected id 0x4308:
[ 140.582841] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 861 Not a hot plug sensor, match sensor id failed

[ 140.719423] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 876 Probe success, slot: 1, slave_addr: 0x20, sensor_id: 0xa56
–>You only need to pay attention to this log. Once the address and id match, it means that there is no problem with I2C communication.
Based on my experience, it is likely that there is a configuration error in the xml file, which causes the camera to be unable to parse further.
Is your camera a front camera?

Please try the following position values, each of which can be tested

@keven.wu-Q
In my board i have only one camera. And position is FRONT in my case.
And Just changed “isComboMode” to 0 other fields in ‘quec_s5k4h7_2lane_module.xml’ file are as it is. Do you want me to test with other configurations?

Yes, you can try other configurations. If the hardware is not the problem, it is just that the XML file is not parsed.
If all else fails, further analyze whether there is a problem with the hardware device.

@keven.wu-Q

I tried setting position as REAR instead of FRONT. But getting the same behaviour.
For debugging, I have added debug prints in each function every source files in “src/kernel/msm-5.4/techpack/camera/drivers/cam_sensor_module/cam_sensor” folder.
And following is the debug log.

[ 61.181897] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 908 Probe success,slot:1,slave_addr:0x20,sensor_id:0xa56
[ 61.192321] CAM_INFO: CAM-SENSOR: cam_sensor_power_down: 1372 EB:
[ 61.192321]
[ 61.302845] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_ioctl: 91 EB:
[ 61.302845]
[ 61.310747] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 818 EB:
[ 61.310747]
[ 61.318539] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 819 EB: cmd->op_code=257
[ 61.318539]
[ 61.327703] CAM_INFO: CAM-SENSOR: cam_sensor_query_cap: 690 EB:
[ 61.327703]
> [ 61.562796] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close: 74 EB:
[ 61.562796]
[ 61.570614] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close_internal: 46 EB:
[ 61.570614]
[ 61.579303] CAM_INFO: CAM-SENSOR: cam_sensor_shutdown: 739 EB:
[ 61.579303]
[ 61.586879] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close: 74 EB:
[ 61.586879]
[ 61.594715] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close_internal: 46 EB:
[ 61.594715]
[ 61.603305] CAM_INFO: CAM-SENSOR: cam_sensor_shutdown: 739 EB:
[ 61.603305]
[ 61.610869] CAM_INFO: CAM-SENSOR: cam_sensor_release_stream_rsc: 54 EB:
[ 61.610869]
[ 61.619188] CAM_INFO: CAM-SENSOR: cam_sensor_release_per_frame_resource: 81 EB:
[ 61.619188]
[ 61.628282] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close: 74 EB:
[ 61.628282]
[ 61.636091] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close_internal: 46 EB:
[ 61.636091]
[ 61.644717] CAM_INFO: CAM-SENSOR: cam_sensor_shutdown: 739 EB:
[ 61.644717]
[ 61.652458] CAM_WARN: CAM-CRM: cam_req_mgr_close: 195 release invoked associated userspace process has died, open_cnt: 1
[ 61.663520] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_ioctl: 91 EB:
[ 61.663520]
[ 61.671319] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close_internal: 46 EB:
[ 61.671319]
[ 61.679938] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_ioctl: 91 EB:
[ 61.679938]
[ 61.687754] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close_internal: 46 EB:
[ 61.687754]
[ 61.696377] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_ioctl: 91 EB:
[ 61.696377]
[ 61.704173] CAM_INFO: CAM-SENSOR: cam_sensor_subdev_close_internal: 46 EB:
[ 61.704173]
[ 61.712822] CAM_WARN: CAM-CPAS: __cam_cpas_subdev_close: 706 device already closed, open_cnt: 0
[ 61.722085] binder: release 1894:1919 transaction 45 in, still active
[ 61.728678] binder: send failed reply for transaction 45 to 2529:2529
ERROR: Pipeline doesn’t want to pause.
ERROR: from element /GstPipeline:pipeline0/GstQmmfSrc:qmmf: Camera service has died !
Additional debug info:
/home/qcm2290_linux_r60_r004-SC206E_rl/build-qti-distro-rb-debug/tmp-glibc/work/aarch64-oe-linux/gstreamer1.0-plugins-qti-oss-qmmfsrc/1.0-r0/gst-plugin-qmmfsrc/qmmf_source.c(499): qmmfsrc_event_callback (): /GstPipeline:pipeline0/GstQmmfSrc:qmmf
Setting pipeline to NULL …
Freeing pipeline …
GBM_INFO::~msmgbm_mapper(167)::gbm mapper de-instantiated

One thing I observed in this board wrt EVK, in my board, after the ‘cam_sensor_query_cap’ API “cam_sensor_subdev_close” is called automatically.

Can you provide a complete schematic?

Hi,

Already shared in the previous reply. Please let me know if you want any further details.

My custom HW has only 1 camera and that is on CSI1.
Please find camera related section of my custom HW from Link

I unable to share the link again. It was in 7 March post.

Do you have our FTP account? If you are our customer, please open a ticket on e-service so that we can track and analyze it further.