Comments (10)
A wireshark dump is also good, so thanks for that.
That explains why your name was familiar, I have had a look through github for other atem implementations at various points in time to see what there is out there and if there was anything I could learn from them.
It looks like the problem is that these byte offsets have changed over time.
From the collection of dumps we have, as recent as 8.1.0 has byte 7 as 0x04: 5f746f70 01 18 02 01 04 02 01 04 01
(from https://github.com/nrkno/tv-automation-atem-connection/blob/master/src/__tests__/connection/tvshd-v8.1.0.data) Then in 8.1.2 it becomes byte 8 with the 0x04 value https://github.com/LibAtem/LibAtem.ComparisonTests/blob/master/LibAtem.MockTests/TestFiles/Handshake/2me-v8.1.2.data
So this appears to have changed in 8.1.1
Something that might interest you is the work I have been doing in https://github.com/LibAtem/LibAtem, which is where I put most of my reverse engineering work (with bits getting copied here when needed). For that I am writing a suite of tests comparing the implementation against the offical sdk to check for correctness. While I am focussing on getting 8.1 100% complete first, I can see that hidden amongst the expected 8.1.1 failures is an incorrect number of hyperdecks.
from sofie-atem-connection.
I can confirm that on my TVS HD under firmware version 8.2 the topology command is incorrect:
"mixEffects": 1,
"sources": 24,
"downstreamKeyers": 2,
"auxilliaries": 1,
"mediaPlayers": 2,
"serialPorts": 1,
"maxHyperdecks": 1,
"DVEs": 4,
"stingers": 1,
"superSources": 0,
"cameraControl": false,
"advancedChromaKeyers": true
So I don't know how you figured out bytes (6,7,8,9,10) but I think they shifted one byte.
A dump from 8.1 shows everything correctly for me, so this probably changed in protocol version 2.30 (fw 8.1.1)
I have created a prerelease of our library with a preliminary fix for this, can you test this against your device with version 2.0.0-nightly-feat-proto-v230-topology-changes-20200418-110107-20e1513.0
from sofie-atem-connection.
It is a lot of trial and error to figure out what the bytes in that command mean. Our interpretation of that could well be wrong, and I know there are other errors in that command but it is the hardest one to figure out.
Would you mind sharing the output file from https://builds.julusian.dev/atem/atem-connection-data.exe? It simply records all the commands the atem sends while opening a connection, which is useful to help interpret some of these more difficult ones without needing physical access to every model
from sofie-atem-connection.
Overall your interpretation of _top looks more accurate than other libraries. I am using macOS so I cannot run your exe... do you have a nodejs equivalent of that program? Otherwise I can also just send you a dump from Wireshark.
from sofie-atem-connection.
Here is a package dump of my 1ME Production Studio 4K
Initialize 1ME PS4K.pcapng.zip
from sofie-atem-connection.
I am also making an implementation of the protocol (at Swift-Atem) and using that implementation I created a simple program that simulates an ATEM switcher so that I can test it against the official ATEM Software Control GUI app from Blackmagic.
(Below tests are done using ATEM Software Control V8.2.1)
Using the simulator I can confirm that
- Changing byte 2, adds/removes downstream keyers in the official GUI
- Changing byte 5, adds/removes media players
- Changing byte 7, enables/disables the remote RS422 settings pane
- Changing byte 8, adds/removes hyperdecks in the settings pane of the official GUI
- Changing byte 10, enables/disables the STING button under Transition Style
You mapped (in 6048802)
https://github.com/nrkno/tv-automation-atem-connection/blob/7b4037414df5c1df63589a72fb9e2efa37b7bf45/src/commands/DeviceProfile/topologyCommand.ts#L10-L20
So I don't know when you figured out bytes (6,7,8,9,10) but I think they shifted one byte.
from sofie-atem-connection.
Then maybe they added something ATEM-mini related at byte 6 and all the other bytes got shifted one byte?
from sofie-atem-connection.
Then maybe they added something ATEM-mini related at byte 6 and all the other bytes got shifted one byte?
Atem mini support was added in 8.1 and this changed in 8.1.1 so it could be anything. It looks like byte 6 changed to 0x01 on both my Atem TVS HD and your 1 M/E. @Julusian if you have the time could you check what it says on your Mini?
from sofie-atem-connection.
For my mini:
8.1.0 = 5f746f70 01 0e 01 01 00 01 00 04 01 0000000000010000000000
8.1.1 = 5f746f70 01 0e 01 01 00 01 00 00 04 0100000000000100000000
So it doesnt look like something for the mini.
The changelog doesn't indicate anything that might use a flag here though, so this wont be a simple change to figure out
from sofie-atem-connection.
It looks like this is resolved for now. Im going to close this, but please do open another issue if you have more questions or find other things which look wrong
from sofie-atem-connection.
Related Issues (20)
- Control Fairlight Master Channel HOT 1
- Is running macro - state HOT 1
- How to work with macros HOT 3
- disconnected event never fired
- uploadStill images are corrupted HOT 4
- Fails in Electron renderer process HOT 3
- Remote Reboot HOT 2
- setTime(), requestTime() HOT 1
- Documentation Link HOT 2
- Atem Multivew StateChange Flooding HOT 9
- Strange things are happening in packed electron environment HOT 10
- Feature Request: Add Counter Command HOT 6
- Investigate: Child thread as 'native' code HOT 2
- Add support for IBMDSwitcherDisplayClock HOT 1
- Add flag if SuperSources are cascaded
- Add batching api. To allow for setting multiple supersource boxes in the same packet HOT 4
- Feature: Expose CCU commands? HOT 1
- Upload errors "Lost lock mid-transfer" HOT 4
- Input listener if it is receiving signal! HOT 1
- Napi::Error crash (in dependency?) HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sofie-atem-connection.