DecoderPro not reading K1D4 decoder (DCC++EX)

Stephane Savard Feb 5, 2022

  1. Stephane Savard

    Stephane Savard TrainBoard Member

    639
    1,748
    30
    Hi all, so I'm just starting out with DCC++EX and JMRI. I've already setup a DCC++EX command station, and I connect it to my laptop running JMRI, specifically to run DecoderPro. I only have a small programming track connected to the command station.

    The problem I'm having is that I'm unable to read any of the CVs from one particular locomotive. It's a Kato ES44AC with a TCS K1D4 decoder. When I put it on a programming track and attempt to read it (click Identify), the loco keeps inching forward as it tries to read it, and the UI ends up giving me an error in the status bar: Programmer Status: Stopping due to error: No acknowledge from locomotive (308).

    However, I am able to read all the sheets just fine for an Atlas RS-11 model with an NCE decoder, and a Rapido GMD-1 with a LokSound 5 micro decoder.

    To make things more confusing, if I remove all locomotives from my main layout powered by an NCE Powercab, put the K1D4 equipped locomotive on it, I can read CV 29 in programming on the track mode (returns 038).

    Leads me to believe I have a configuration setting wrong in JMRI, or the powercab is just better at exception handling?

    Anyone else ever get this problem and figured out how to solve it?
     
  2. Sumner

    Sumner TrainBoard Member

    2,798
    5,837
    63
    I had that problem often with the original DCC++ but not with DCC++EX yet but it can happen with it or with any system.

    I'd first wipe the track down with a cleaner and also try and clean the wheels (that often took care of it for me). If that doesn't work then look at this page that addresses the 308 error....

    https://dcc-ex.com/reference/software/diagnostic-d-ack-command.html

    They will also help on their Discord Channel....

    https://discord.com/invite/PuPnNMp8Qf

    038 would mean it is set at 28/128 speed steps, can run DC, and it has a long loco address.

    I don't think you have a setting wrong in JMRI but that the decoder might be slightly out of NMRA specs or there is a electrical pickup error that NCE is dealing with. You might of run into the reverse problem where the NCE wouldn't work. With DCC++EX they have an option to work around reading/writing to a decoder where you get the 308 error (link above). I haven't had to do it yet but I'm sure I will sooner or later,

    Sumner
     
  3. Ash

    Ash TrainBoard Member

    106
    66
    8
    The DCC++EX diagnostics might identify that the decoder requires a longer pulse. Here is an example where a line is added to myStartup.h to update the max pulse to 9200us. The default 8500us was lower than the 8700us noticed with the diagnostics. Allowed 500 for some variation.
    https://dcc-ex.com/advanced-setup/startup-config.html#adding-in-more-than-one-startup-command

    The diagnostic commands can also be run from within JMRI. Use the menu items to open the DCC++ Monitor and Send DCC++ Command.

    Consider pasting the before/after diagnostic reports here to advise how you resolved the problem.
     
    Sumner likes this.
  4. Stephane Savard

    Stephane Savard TrainBoard Member

    639
    1,748
    30
    Thanks, I'll give this diagnostic thing a try, I noticed earlier today that my broadway limited mikado (paragon3) is also having this same problem. At least you've both given me something to look at!
     
  5. Stephane Savard

    Stephane Savard TrainBoard Member

    639
    1,748
    30
    Alright!

    So with ACK ON, I upped ACK MAX to 10500 and checked the result...

    Code:
    TX: Prog Read Cmd: CV: , Callback Num: , Callback Sub:
    RX: DIAG: ACK baseline=0/0mA Threshold=20/59mA Duration between 4000us and 10500us
    RX: DIAG: VB cv=19 value=0
    RX: DIAG: ACK after 23mS max=302/902mA pulse=8584uS samples=2 gaps=0
    RX: DIAG: V0 cv=29 bit=5
    RX: DIAG: NO-ACK after 147mS max=0/0mA pulse=0uS samples=111 gaps=0
    RX: DIAG: V0 cv=17 bit=7
    RX: DIAG: NO-ACK after 144mS max=2/5mA pulse=0uS samples=76 gaps=0
    RX: DIAG: V0 cv=17 bit=6
    RX: DIAG: NO-ACK after 147mS max=0/0mA pulse=0uS samples=110 gaps=0
    RX: DIAG: V0 cv=17 bit=5
    RX: DIAG: ACK after 27mS max=319/953mA pulse=8584uS samples=46 gaps=0
    RX: DIAG: V0 cv=17 bit=4
    RX: DIAG: ACK after 27mS max=319/953mA pulse=8700uS samples=49 gaps=0
    RX: DIAG: V0 cv=17 bit=3
    RX: DIAG: NO-ACK after 147mS max=1/2mA pulse=0uS samples=111 gaps=0
    RX: DIAG: V0 cv=17 bit=2
    RX: DIAG: ACK after 27mS max=319/953mA pulse=8584uS samples=51 gaps=0
    RX: DIAG: V0 cv=17 bit=1
    RX: DIAG: NO-ACK after 149mS max=0/0mA pulse=0uS samples=148 gaps=0
    RX: DIAG: V0 cv=17 bit=0
    RX: DIAG: NO-ACK after 150mS max=0/0mA pulse=0uS samples=184 gaps=0
    RX: DIAG: VB cv=17 value=203
    RX: DIAG: ACK after 26mS max=313/935mA pulse=8700uS samples=40 gaps=0
    RX: DIAG: V0 cv=18 bit=7
    RX: DIAG: ACK after 27mS max=318/950mA pulse=8584uS samples=40 gaps=0
    RX: DIAG: V0 cv=18 bit=6
    RX: DIAG: ACK after 27mS max=318/950mA pulse=8700uS samples=42 gaps=0
    RX: DIAG: V0 cv=18 bit=5
    RX: DIAG: ACK after 26mS max=319/953mA pulse=8584uS samples=46 gaps=0
    RX: DIAG: V0 cv=18 bit=4
    RX: DIAG: ACK after 27mS max=319/953mA pulse=8700uS samples=47 gaps=0
    RX: DIAG: V0 cv=18 bit=3
    RX: DIAG: NO-ACK after 146mS max=0/0mA pulse=0uS samples=111 gaps=0
    RX: DIAG: V0 cv=18 bit=2
    RX: DIAG: ACK after 27mS max=314/938mA pulse=8700uS samples=47 gaps=0
    RX: DIAG: V0 cv=18 bit=1
    RX: DIAG: ACK after 26mS max=337/1007mA pulse=8700uS samples=51 gaps=0
    RX: DIAG: V0 cv=18 bit=0
    RX: DIAG: NO-ACK after 147mS max=0/0mA pulse=0uS samples=146 gaps=0
    RX: DIAG: VB cv=18 value=9
    RX: DIAG: ACK after 27mS max=318/950mA pulse=8468uS samples=50 gaps=0
    RX: DIAG: Callback(2825)
    RX: Program Reply: Callback Num: 0, Callback Sub: 0, CV: 0, Value: 0
    Seems I'm getting ACKs as high as 8700.

    So yep, same thing you're getting Ash! Problem solved, I'm able to read the TCS decoder now.

    The Broadway Limited 2-8-2 mikado on the other hand is returning ACKS with pulses upwards of 11252us...

    Code:
    RX: DIAG: ACK after 30mS max=96/287mA pulse=11252uS samples=83 gaps=0
    Anyway, with an ACK MAX of 12000us I'm now able to read the decoders, so it looks like problem solved!
     
    Sumner likes this.
  6. Stephane Savard

    Stephane Savard TrainBoard Member

    639
    1,748
    30
    Well, reading each sheet of the BLI 2-8-2, there must be something else going on. I mean for now it's fine, but some CVs still returns 308 error. For example, in the motor page, "BEMF kd" returned 308, but all other are fine. The speed table is off, but still, in the speed table page, all of the CVs were correctly read from the decoder, except for 56. o_O

    Anyway, I'm getting the majority of the CVs, which is good enough for now, I'll dig deeper into the settings and diagnostics later.

    edit: spelling
     
    Sumner likes this.
  7. Sumner

    Sumner TrainBoard Member

    2,798
    5,837
    63
    Fred and the others have added a lot of decoder programming power to DCC++EX (y).

    Sumner
     
  8. Ash

    Ash TrainBoard Member

    106
    66
    8
    Note that you can run diagnostics for a single CV. e.g. <D ACK ON> <R 56 1 1>

    For an indexed CV, where writes are done preceeding the read - -
    - Open the Send/Monitor screens and the CV pane.
    - Send: D ACK ON (brackets optional in JMRI dialog box)
    - Then use the read button next to the problem CV.

    And remember to send <D ACK OFF> when you are finished.
     

Share This Page