So i just found this
pull request
of the linuxcnc-ethercat by Scott Laird. He also wrote drivers for the el3004(actually he was smart and created el30x4) and el3202.
The only difference between his 30x4 and my 3004 is a pdo entry called sync_error with subindex 0x0e and an extra gap. Which i cannot see where he found. I looked again the cstruct, in the device xml and in Twincat, there is no entry like that. Nevertheless i now get the correct amount of bytes with the stack 2004, 3004, 1002, with everything seemingly working fine.
Any ideas where this entry comes from?
I will experiment with adding this entry to other device drivers