Transcoding WITHOUT a valid serial number

Recommended Posts

Thanks for the work;)
Patch successfully applied!


System info:
DSM version: DSM 6.2.2 24922 UPDATE 4
Loader version and model: JUN'S LOADER v1.03b - DS3615xs
Using custom extra.lzma: 1.03b_mod ds3615 DSM 6.2.2 v0.5_test
Installation type: BAREMETAL - N40L

Link to post
Share on other sites
  • 2 weeks later...

since @likeadoc did not keep his word in releasing the serialnumber generator, here the code i sent him (most of the sns will be valid):


from random import randrange

def get_digit(number, n):
    return number // 10 ** n % 10

def get_cross_sum(number):
    return sum([int(i) for i in str(number)])

def get_serial_number(model):
    Generate a serial for the given model
    :param model: The model shall be between 0 and 1 for 0=DS3615 and 1=DS3617
    :return: The serial as string
    model_type = ['LWN', 'ODN']
    lwn = range(1640, 1691, 10)
    odn = [1690] + range(1710, 1791, 10) + range(1810, 1891, 10)
    model_range = [lwn, odn]
    model_sn_count = 10
    bbb_range = range(000, 901, 100)

    xyz_range = model_range[model]
    xyz = xyz_range[randrange(len(xyz_range))]
    bbb = bbb_range[randrange(len(bbb_range))]
    element_at = randrange(model_sn_count)  # Every block contains 25 serialnumbers

    digit_x = get_digit(xyz, 3)
    digit_y = get_digit(xyz, 2)
    digit_z = get_digit(xyz, 1)

    aaa = (10 - digit_z + get_cross_sum(bbb)) % 10
    increment = [digit_x * 10 + digit_y] if (digit_y + digit_z) <= 10 else [digit_x * 10, digit_y]

    result = aaa
    for i in range(1, element_at):
        result = result + increment[(i + 1) % len(increment)]

    result = "%d%s%03d%03d" % (xyz, model_type[model], result, bbb)
    return result

if __name__ == '__main__':
    print "1: DS3615xs"
    print "2: DS3617xs"
    input_value = None
    while input_value is None:
        input_value = raw_input("Which model (1,2): ")
        if input_value == "1" or input_value == "2":
        input_value = None

    model = int(input_value) - 1

    serial_number = get_serial_number(model)
    print "SerialNumber: " + serial_number

# Algorithm:
# SerialNumber is divided by -> XYZ ODN AAA BBB.
# ODN is the model specific code
# every XYZ/BBB block contains an unknown number of serialnumber and can be 5 or 25, but not too many

# AAA = (10 - (Z) + cross_sum(BBB)) modulo 10
# BBB = constant value between 000 - 900 in 100 steps
# next value for AAA -> previous value + Offset
# Offset is defined by:
# Y + Z <= 10, the offset is +XY, otherwise its alternated +(X*10), +Y


Link to post
Share on other sites

@kggitj I am still working on the new serial generator for 918/3615/3617 - unfortunately your script does not detect all possible valid serial numbers! I am currently a little bit stuck at reverse engineering the generation algo - I would appreciate if you could contact me again so I can share my findings with you and get a little help;)!

Link to post
Share on other sites
  • 1 month later...

Hi, unfortunately the transwriting on the 3615 version of 6.1.7 has not earned ((Patch all works out, but then everything changes to "success":false,""msg":"SN format is wrong."

serial number from the generator, then additionally took a photo from the Internet.

What could be the case? Help)

Link to post
Share on other sites

everything worked ! Can someone help! in order for the patch to work, it is important that video station is in the volume 1 section, and it is necessary to select the section with /video station/when starting. I have a lot of disks and video station was in another section. This is important ! The author of the patch thank you very much for your work

Link to post
Share on other sites

@ruchechnik hi:) currently there are two versions of synocodectool:

1) /volumeX/@appstore/VideoStation/bin/synocodectool -> this one is specifically for video station, currently the patch only works if it is located on volume1...

2)/usr/syno/bin/synocodectool -> this one is for all other applications


the patch script lets you choose which one you want to patch:)

Link to post
Share on other sites
2 hours ago, likeadoc said:

1) /volumeX/@appstore/VideoStation/bin/synocodectool -> this one is specifically for video station, currently the patch only works if it is located on volume1...


as its a script anyone who has this "unusual" case can just change the path in the script to volume2 or anything else, it just needs to be documented so people having trouble can check for this condition


Link to post
Share on other sites
  • 3 weeks later...

@Rezdbic what's the output of

sha1sum /usr/syno/bin/synocodectool

and, if you are using VideoStation, this (please substitue volumeX for the volume where VideoStation is installed) command?


sha1sum /volumeX/@appstore/VideoStation/bin/synocodectool

AFAIK 24992-6 does not include an update to synocodectool..

  • Like 1
Link to post
Share on other sites

6.2.3 patch not work for me,


cat /usr/syno/etc/codec/activation.conf

cd /dev/dri
-ash: cd: /dev/dri: No such file or directory

I have official serial 1780PDN645708 & mac 0011327b9be5 perhaps blacklisted ?


Link to post
Share on other sites

@dyter this patch only enables you to transcode (in hardware or software) within videostation or moments - it does not enable hw transcoding in general. For HW transcoding to work you would need to have the appropriate drivers installed, only then /dev/dri will be populated.




Link to post
Share on other sites
5 hours ago, dyter said:

cd /dev/dri
-ash: cd: /dev/dri: No such file or directory


from what you wrote here

i'd say its a driver conflict

when using juns original drivers with his i915 drivers and combining this with with 6.2.3 then jun's driver loads first an fail loading with lots of unknown symbols, leaving synology's new i915 driver unused (that is nearly on the same level as jun's)


this extra/extra2 is superposed to fix this problem, it deletes jun's driver and let dsm use its own new i915 driver


Edited by IG-88
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.