Closed nottooloud closed 3 years ago
According to this Cisco uses Sony Visca protocol on RS232. Maybe, they also use Visca over IP. Try the sony visca module, straight to the camera, and see if that works. You might have to check what port the camera has open for Visca
That document doesn't include the P60, which talks via ethernet and which Cisco insists does not use VISCA. Seems unlikely that that's true, though, when all their previous cameras were VISCA and the C40 talks to them with the same commands. Anyway. The camera's IP address is listed in the codec web interface. How do I find the port? Wireshark sees no traffic on the IP when the codec is talking to the camera. Of course, I don't actually know how to use Wireshark.
Codec logs refer to CamVisca and ViscaReader when it's booting up and connecting the cameras. Seems promising.
I was going to suggest Wireshark. You should put a switch in between the camera and the codec, and then dump the port to a different port, where you would do a pcap. Check this https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/epc/command/epc-cr-book/epc-cr-m1.html
If the camera really doesnt work when you put a switch between it and the codec, than that means the camera really not talking over Ethernet, and might be only using Ethernet cable as a medium to talk some other protocol (probaly Visca over serial rs232)
I already have a switch in there so I can hang more cameras on the codec's dedicated camera port. And, as I said, the camera's IP address is listed in the web interface. Definitely ethernet.
OK, cool. Try to get the packet capture, so that we can see what kind of message is being sent to the camera. Ideally, capture some sort of movement or other camera action. If it is really VISCA over IP you should be able to use the Sony VISCA module, or I can help you adapt that module to the Cisco one. (I wrote most part of the Sony visca module)
Only port open on the camera appears to be 22, with SSH passworded. The API via the codec is well-documented.
Can you do a monitor on the switch port and get the packet capture of the coms between the codec and the camera? If you are able to get that, I can check the pcap
I mirrored the camera port to a laptop running Wireshark, filtered out the laptop's IP address and the codec's NTP calls, and was left with a bunch of application data. I started a fresh capture, ran a bunch of commands, and grabbed the codec's log that lists those commands. Perhaps this will be useful. Cisco C40 camera command capture.zip
I didnt see anything useful in the pcap, apart from some multicast, and some ipv6 TLS encrypted traffic. So, either the codec and the camera communicate with encryption over IPv6 or your packet capture was not right. You mentioned that you were able to see the camera's IP in the codec. Can you filter the traffic to that IP in your pcap ?
Started with filtering for the camera's IP. Got a million messages from Dante on the laptop. Nothing useful. Was advised that just filtering out the laptop would show if frames are passing that are not IP. Cisco insists that this camera doesn't use VISCA.
https://community.cisco.com/t5/telepresence-and-video/precision-60-camera-control/td-p/2528850
I happen to work in Cisco and would like to correct a couple of misunderstandings here. 1: C40 does not support the P60 camera and can not control it. The codec is end of support and as you say: a throwaway, but the P60 camera is still for sale and is certainly not a common throwaway. It looks a bit like the older 12x Precision HD camera, but they function differently. The PHD 12x runs Visca over serial, but the P60 uses ethernet. How the codec translates the xAPI-command to something the camera understands is not public information.
2: Yes, you can control the camera from the Codec xAPI, but the xAPI is so much more. Cisco has provided equipment to Bitfocus to implement support, please have a look at https://github.com/bitfocus/companion-module-requests/issues/208#issuecomment-777846958 for further details.
1: C40 does not support the P60 camera and can not control it.
The pair of Precision 60 cameras that I have been controlling with this C40 for the last few weeks say that you're wrong.
2: Yes, you can control the camera from the Codec xAPI, but the xAPI is so much more.
Absolutely true. Don't care. I have no need of the telepresence functions. I simply want to control the cameras, so that I can use them as superb but inexpensive video cameras for live streaming. Hence this request. It does make sense to consolidate the variously titled projects into one, as long as it fully implements. That will be an enormous task, though. This subset is pretty simple. I have it operating already as a web page full of POST statements. If Companion's Generic HTML module wasn't restricted to JSON, I wouldn't even be making this request. I'd just write it.
@nottooloud i was able to use the generic HTTP module as a base, and modified it to build a Cisco CMS module. Cisco CMS uses x-www-form-urlencoded instead of json. Can you specify exactly what format the HTTP request you use to send commands to the camera? Also, are you able to use a tool like Postman to send these commands to the camera? if yes, it should be easy to adapt to a companion module
Totally clunky and hardwired, but it allows me to evaluate the commands.
Totally clunky and hardwired, but it allows me to evaluate the commands.
Cool. Does the camera need to be connected to the codec for this html page to work? Or the commands can be sent straight to the camera?
This page talks to the codec at the hardcoded URL. We Wiresharked communications between the codec and camera and it was mostly encrypted IPv6 traffic, with some TCP.
@nottooloud do you mind sharing a picture of your current setup and how you connected the camera to the codec using ethernet? I'm starting to test with an old C90 I have at the office, but it seams that the codec only controls the camera via Serial port
Ok, it seems like these cameras only have the Ethernet port for software upgrade. They can only listen to ftp (port 21), and they dont seem to support VISCA over IP. This said, i was able to control the camera using companion WITH the codec. So, as long as you dont mind having the codec as a "man-in-the-middle", it should work fine. But, instead of creating a module from scratch, i suggest you to submit a feature-request on this module, since they already have many xCommands working. They just need to add the commands you need.
Edit: I have submitted the feature request. It shouldn't be too hard to implement.
The 2 ethernet ports on the C40, 60, and 90, are separate networks. The #1 port talks to the world, and the #2 port controls a P60 camera, either directly, or through a switch or a hub if you have more than one camera. The serial port controls the older cameras and can daisy-chain some number of them. The older cameras confusingly also use an RJ45 jack, but it's VISCA, not ethernet.
It should be possible to control the older cameras without the codec, no? USB to RS232 adapter to ethernet cable to camera?
Ah, ok. so the C90 works differently. It only controls the camera with a RS232-to-RJ42 cable. Anyway, I am implementing the functionality in the module above. I already have PTZ UP/Down/Left/Right working. Next will be the presets (save and store). This should at least allow you to control the camera while having the codec in the middle. And, yes, in theory, if you had a USB-to-Serial rj45 you should be able to control the camera without any codec, but then, that defeats the purpose. We would have to have an entire new module that talks over serial USB. Not sure if there is anything in companion yet.
Ah, ok. so the C90 works differently.
Depends on the camera. C90 controls a P60 over ethernet. There is no other way to control a P60.
How does your VISCA module talk to a camera? Is that just for cameras that do VISCA over ethernet?
Yeah, the current visca modules that i have used with companion all go over ethernet. Is it goo much of a problem if we have to have the codec? I already have Ramp (u,d,l,r), zoom, focus, and autofocus working.
Not really a problem, but I just bought 8 TTC8-02 cameras, what they call the PrecisionHD Camera - 1080p12x, and they'd be more useful standalone. I also got a pair of P60, 2 C20s and 2 C60s in the same auction, though, so there's a way to make it all work. All of my musician friends are about to have better looking streams.
I already have Ramp (u,d,l,r), zoom, focus, and autofocus working.
Wow! Are you working on thomascantrellsea's module?
Not really a problem, but I just bought 8 TTC8-02 cameras, what they call the PrecisionHD Camera - 1080p12x, and they'd be more useful standalone. I also got a pair of P60, 2 C20s and 2 C60s in the same auction, though, so there's a way to make it all work. All of my musician friends are about to have better looking streams.
I already have Ramp (u,d,l,r), zoom, focus, and autofocus working.
Wow! Are you working on thomascantrellsea's module?
Yes. Should be ready with all the functions you requested by end of day today. Once im done coding and testing ill submit a PR to his repo
Amazing.
Ok, PR submitted. Feel free to test it from here. I was not able to implement brightness since it seems to be controlled on the codec's output, and not the camera's output. Also, position set doesn't seem to make any sense to implement, since the user would have to put totally arbitrary numbers (1-65525) for each parameter.
Position set enables presets directly, but not so important for Stream Deck. Eventually, I want MIDI control of most of these parameters, with feedback, so I can do slow manual zooms and pans.
I'm not qualified to compile, have to wait for a binary.
you dont need to compile, you can download the code and run it with node. Anyways, i can compile a test version for you if you run windows.
I'll see if I can figure that out.
Brightness works on the Precision 60 camera. I'm not running the video through the codec.
Lol. I can't even figure out how or what to download for your PR, let alone what to do with it. IANAP. I think I'm going to have to learn some Python this year, though.
Here you go. Compiled for windows.
Also, it seems like the P60 cameras indeed support Visca over IP (according to this, but unfortunately i only have the PrecisionHD Camera - 1080p12x here to test, and this one is serial only,
Good news: i was able to find a P60 camera here at the office. I'll try to see what can be done.
Calling this closed, features being incorporated into https://github.com/bitfocus/companion-module-cisco-collaboration-endpoints
Indeed, the P60 camera uses encrypted TLS over IPV6 to communicate with the codec. Even if it uses Visca Over IP, we still have no way of knowing if this traffic is authenticated or not, so, unless someone is able to reverse engineer Cisco's software or get a hold of the source code, i dont think we will have success controlling the P60 camera without the codec. The good news is that the functions i implemented today on that module also work with these new codecs and P60. (You just have to enable HTTP mode in the codec)
I noticed if you remove the back label from the P60 it exposes an RJ11 connector and a second RJ45 connector. Any idea what those are?
Those are VISCA out and in ports. The MXCAM, which is apparently the same camera repackaged, has them exposed and labeled. I don't think they're enabled in firmware. Couldn't hurt to try, though.
Discussion here:
https://www.reddit.com/r/CommercialAV/comments/pltk1a/ctsmxcam_from_and_old_cisco_mx700800/
Those are VISCA out and in ports. The MXCAM, which is apparently the same camera repackaged, has them exposed and labeled. I don't think they're enabled in firmware. Couldn't hurt to try, though.
Discussion here:
https://www.reddit.com/r/CommercialAV/comments/pltk1a/ctsmxcam_from_and_old_cisco_mx700800/
I would assume that, even if activated in the firmware, they would be Visca over Serial, and not Visca over IP. Im that case, you still wouldn't be able to use companion to control it,without additional hardware
Visca over Serial, and not Visca over IP
Correct. And not completely standard VISCA, at that. I use the serial VISCA ports on my PrecisionHD1080 cameras.
Good news: i was able to find a P60 camera here at the office. I'll try to see what can be done.
Hi Yuri. I have one Cisco P60 camera and I want to control it from windows. Can I get your program?
Best regards Marko.S
I have one Cisco P60 camera and I want to control it from windows.
No controller? There are several programs that work, if you have a TTC7 or TTC8 rackmount controller with later firmware. Nothing else is liable to control a Precision 60. Cisco encrypted the control protocol. Great cameras, though. Lovely glass.
I have one Cisco P60 camera and I want to control it from windows.
No controller? There are several programs that work, if you have a TTC7 or TTC8 rackmount controller with later firmware. Nothing else is liable to control a Precision 60. Cisco encrypted the control protocol. Great cameras, though. Lovely glass.
Hi. I have C40 codec but I would like to have an UI on my laptop to control it during a live streaming.
Good news: i was able to find a P60 camera here at the office. I'll try to see what can be done.
Hi Yuri. I have one Cisco P60 camera and I want to control it from windows. Can I get your program?
Best regards Marko.S
As already mentioned, these cameras unfortunately only work if you also have the codec (the hardware that controls all the video calls etc.. like a C90). Good news is that, if you do have the codec, you can use Butfocus companion to move the camera and zoom in/out.
Hi. I have C40 codec. Can you explain more how to do? I'm new in programing (Phyton).
If you have the codec, you can use Companion, or look at https://github.com/CptOblivion/Cisco-Codec-Controller, which is the program I use to run the 4 cameras at our concert venue. Works with any standard MIDI controller, in addition to its own GUI.
If you have the codec, you can use Companion, or look at https://github.com/CptOblivion/Cisco-Codec-Controller, which is the program I use to run the 4 cameras at our concert venue. Works with any standard MIDI controller, in addition to its own GUI.
Sorry but I don't get any program at the attached link (see the picture)
Something didn't copy and paste correctly. Trying again.
Hrrmmmm, something is usurping the link. Never mind Github's link code, just do this: https://github.com/CptOblivion/Cisco-Codec-Controller
Something didn't copy and paste correctly. Trying again.
Hrrmmmm, something is usurping the link. Never mind Github's link code, just do this: https://github.com/CptOblivion/Cisco-Codec-Controller
This time it worked :) So, it's a Python program ... I hope I'll manage to run it during the weekend. Anything special I should know? Thanks!
PTZ cameras are great for streaming, but expensive. Cisco's telepresence rigs from a few years ago included their Precision 60 Camera. It's a 1080p60 PTZ w/ HDMI & SDI output. Great big F1.5 10x optical zoom lens. The C40 codec running TC 7.3 firmware can control up to 7 of these cameras. Being 5 years out of date, these are corporate throwaways. You can pick up the codec for $40, and the cameras for $100 each. They compare well to the current $1600 PTZ Optics 20x. The API is well documented, and speaks Telnet, SSH, and HTTP/HTTPS. It's attached to this request. I'd like to drop all the camera controls on a Stream Deck. Don't care at all about the rest of the codec controls, since I won't be using any of its other functions.
Particularly juicy is the Camera Ramp command, because you can combine the parameters. Parameters: CameraId(r): <1..7> Pan: <Left/Right/Stop> PanSpeed: <1..15> Tilt: <Down/Up/Stop> TiltSpeed: <1..15> Zoom: <In/Out/Stop> ZoomSpeed: <1..15> Focus: <Far/Near/Stop> Example: xCommand Camera Ramp CameraId:1 Pan:left PanSpeed:1 xCommand Camera Ramp CameraId:1 Pan:stop
Here are the commands I want. xCommand Camera Ramp xCommand Camera TriggerAutofocus xCommand Camera PositionReset xCommand Camera PanTiltReset xCommand Camera PositionSet xCommand Camera Preset Activate xCommand Camera Preset Remove xCommand Camera Preset Store xConfiguration Cameras Camera Brightness Level xConfiguration Cameras Camera Focus Mode
These ethernet-controlled P60s might actually be running VISCA over IP, since all their cameras before this ran hardwired VISCA, and this codec will control them, too. So it might be possible to skip the codec altogether. The cameras feed HDMI when standalone. I am certainly happy to run Wireshark if someone wants to dig into that.
codec-c60-c40-api-reference-guide-tc73.pdf