Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update PyStageLinQ.py to make it work with EngineOs 3.3.0 #34

Open
ssabug opened this issue Mar 3, 2024 · 15 comments
Open

Update PyStageLinQ.py to make it work with EngineOs 3.3.0 #34

ssabug opened this issue Mar 3, 2024 · 15 comments
Assignees
Labels
enhancement New feature or request

Comments

@ssabug
Copy link

ssabug commented Mar 3, 2024

Hi,

First thank you for providing this library, its very handy, and i was expecting this kind of tool for some time....(I use it on my "piratengine" repo, if you're interested)

I had to modify class PyStageLinQ and set ANNOUNCE_IP = "224.0.0.251" to have data flowing for my EngineOs hardware (firmware 3.3.0).

Is there another way if i was supposed to, or, if not, would it be possible to have this option in the constructor in the future?

Thanks in advance.

@Jaxc
Copy link
Owner

Jaxc commented Mar 28, 2024

Hello, sorry for the late answer

I don't think this is related to Engine Os 3.3.0 as it works fine for me, but I think this is a good feature. I'll try to fix add it!

@Jaxc Jaxc added the enhancement New feature or request label Mar 28, 2024
@Jaxc Jaxc self-assigned this Mar 28, 2024
@Jaxc
Copy link
Owner

Jaxc commented Aug 12, 2024

Hello again

I have punshed an update to PyStagLinQ that changes some basic things. I tested it with your repo and it seems to be working!

By default PyStageLinQ will now check all network interfaces on the host and send and receive discovery frames on all of them. It is possible to limit one IP by using e.g. PyStageLinQ(... , ip=192.168.1.13, ...). An idea for PirateEngine could be to add a menu to chose (all interfaces/each specific one) :)

@ssabug
Copy link
Author

ssabug commented Aug 12, 2024

Hi @Jaxc ,

Thank you for this :), ill have a look at it soon.

@ssabug
Copy link
Author

ssabug commented Aug 14, 2024

Hello,

I tested the new version 0.2.1 of your code with my piratengine app (see your pull request comments for details), and i have no device discovered anymore.

I tried the following cases for thePyStageLinQ constructor:

  • passing no ip
  • passing the local ip of the computer running the software
  • passing the former ANNOUNCE_IP value i had to put in the previous version (224.0.0.251)
  • tried even modifying the PyStageLinQ.py discovery_socket.sendto( discovery_frame, ("255.255.255.255", self.StageLinQ_discovery_port),) to previous value discovery_socket.sendto(discovery_frame, (ip, 51337))

All lead to no device discovery.

As i added multiples small changes in my code, i downgraded PyStageLinQ to 0.1.2 ( +changed to ANNOUNCE_IP="224.0.0.251" ) and tried again ; it worked.

As there's no version between 0.1.2 and 0.2.1, im running out of ideas on how to fix this.

Thank you in advance.

@Jaxc
Copy link
Owner

Jaxc commented Oct 15, 2024

Sorry, I completely missed that you have replied to this.

This is super interesting.

Just to check your setup:
Is your computer connected directly to the engine unit, or do you have a switch/router etc in between?
Do you get a log message, if so what message is it? (I assume the timeout "No discovery frames found on {host_ip} last {timeout} seconds."?)
Which OS do you use?

For further debugging, would it be to run Wireshark and log data on the interface?

Thanks so much for your testing, and sorry again for my superlate answer.

@ssabug
Copy link
Author

ssabug commented Oct 16, 2024

hi @Jaxc .

I use a cheap switch where the 2 denon players are connected, and i connect a port of this switch on another switch where computers are connected.

Not sure i remember well the tests i did, but i think i had ""No discovery frames found on {host_ip} last {timeout} seconds." error.

I used Fedora and Arch Linux as test environnments.

@Jaxc
Copy link
Owner

Jaxc commented Oct 18, 2024

Hello @ssabug

That is really good info, Thanks!

Is it just switches and not any router?

I have not tested with several devices at the same time, so maybe that is confusing the code somehow.

I have also noticed a bug that the error message may occur even when that wasn't the actual issue (#46)

@Jaxc
Copy link
Owner

Jaxc commented Oct 21, 2024

Small update:
I seem to have seriously broken something in Linux. Windows seems to be much more lenient when it comes to IP traffic...

@ssabug
Copy link
Author

ssabug commented Oct 21, 2024

they are 2 switches, not routers
and i can confirm having 2 players online wasnt a problem with previous version

@Jaxc
Copy link
Owner

Jaxc commented Oct 28, 2024

@ssabug
Thanks for the extra info!

The main branch should work with Linux now. I will test it a bit more and then try release v0.2.2

@ssabug
Copy link
Author

ssabug commented Nov 1, 2024

Has the pypi package been updated with the changes? or i have to build with github version?

@Jaxc
Copy link
Owner

Jaxc commented Nov 1, 2024

@ssabug You can use 0.2.2.dev2 from PyPi

Sadly it stopped working with windows, so I'm going to try to fix that this weekend

@ssabug
Copy link
Author

ssabug commented Nov 1, 2024

ok thank you @Jaxc .
Im about to try the changes on linux, will keep you updated with the findings.

@ssabug
Copy link
Author

ssabug commented Nov 1, 2024

So here are my findings using 0.2.2.dev2

No IP provided, firewall active

Cannot bind to IP socket: 192.168.0.XX on port 51337
Cannot bind to IP socket: 192.168.XXX.1 on port 51337

expected and OK

No IP provided, firewall inactive

Working! Both decks are detected :) thank you

@Jaxc
Copy link
Owner

Jaxc commented Nov 1, 2024

That is great news! Thanks for testing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants