This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DLP350 Lightcrafter 4500 Firmware bug causing intermittent crashing when switching between pattern mode and video mode.

Other Parts Discussed in Thread: DLPC350

I am getting a consistent error with the DLPC350 chip. For our use case we use a computer with Windows 10 with a projector. we need the projector to be in Pattern mode but we have found when we send a command for the projector to go back to Video mode there is a chance that the DLPC350 chip will freeze and no longer respond to commands. We have had this issue with both Keynote Photonics projectors and ones from Anhua.

I have written a testing program (see attachment) to really nail down this issue and I am able to reproduce the error by calling the LC45 Display Mode command (USB:0x1b,0x1a) with a value of 0 (Video mode). Running this command repeatedly with a HDMI valid connection will cause the chip to freeze in usually under 30 tries. Interestingly, A HDMI cable needs to be plugged into the device for the freeze to occur. When i say 'freeze' i mean, the chip will no longer respond to commands resulting in having to be power cycled to work again.

To help debug the issue

* I have a testing program (testusb.exe) I have written in C.
* My program sends commands via USB.
* I have run this test on multiple WIN 10 computers.
* I have run this test on firmware versions: 4.0.3 and the latest 4.4.0.
* I have run this test on projectors by Anhua and Keynote Photonics.
* Freezing only happens if there is a HDMI plugged into the device - NO HDMI plugged in no error.

My testing program basically works like this :

0 - start loop
1 - Get Projector's Firmware Tag
2 - Set Buffer Freeze to 1  
3 - Set Display Mode to 0 (Video mode)
4 - Set Display Mode to 1 (Pattern mode)
5 - Set Buffer Freeze to 0
6 - Wait for 300 milliseconds
7 - end of loop repeat

In usually under 30 loops the chip will freeze and no longer respond to commands. When it is in this frozen state. My testing program will no longer be able to get the Firmware Tag, and if I run the GUI the GUI doesn't find the projector (it says 'connected' but the firmware version and tag are written as 'xxxxxxxxx') To get the projector working again I have to turn it off and on again.

Note : The test will still freeze the chip if I just loop getting the projector's firmware tag and setting the display mode to 0 repeatedly. No real need for the other commands but they are there for consistency and so i can get a visual that the projector is switching modes. 

Again - strangely - If I run the same test without a HDMI connection it doesn't freeze. I have tried various different monitors and displays for the HDMI (even having the HDMI connected to another computer from the USB cable's source - so having a seperate computer for each cable!)   
The program to reproduce the error is here 
  • Hello Gavin Smith,

    Welcome to TI E2E forums and thanks for showing interest in the DLP technology. 

    We will investigate this issue at our end and will get back to you by middle of next week.

    Regards,

    Mayank

  • Gavin,

    Between Step 3 and Step 4, could you add delay or wait to ensure the controller is indeed in the mode requested by you. For example - step 3, you are requesting to be in video mode, so wait until it is indeed video mode, when you change a mode, it will take definite amount of time to make the transition.

    In case of video mode, it will be automatically run the source detection code, which basically looks at the incoming video timing and reconfigure the controller display datapath accordingly.

    When you not connect the source basically the video detection logic is not doing anything. And you don't see the problem.

    Hope this helps.

    Regards,

    Sanjeev

  • Hi,  

    yes we tried with different delays, up to 300 milliseconds. We can try with longer delays, up to a few seconds, however, in normal circumstances, the error is occurring at random intervals, and not when running it quickly.

    Did you try the test program that we provided which recreates the issue?

    Regards

    Gavin

  • Sorry, I checked the code, and when we did the 300 before, it was at the end of the loop rather than spread between the calls. We tried between the calls, and as you suggest and it appears to be work now, so thanks !

    You can close this off now.

    Regards

    Gavin

  • Gavin,

    Sure, glad that you are able to make progress. You may want to click on verified for this thread to help others refer to this thread.

    Regards,

    Sanjeev