tarsjoris / x-air

Tooling for the Behringer X-Air series mixers (XR18) and control surfaces (X-Touch).
GNU General Public License v3.0
8 stars 0 forks source link

Build Failure #26

Closed jeffensen closed 1 month ago

jeffensen commented 1 month ago

When I try to build the tool on Windows, I get errors. Could you maybe release an executable .jar file?

I have a Windows 10 (10.0.19045) machine with following versions: JDK v23 Maven v3.9.9 also tried with v4beta npm v10.2.8 node v20.17.0

tarsjoris commented 1 month ago

Hi jeffensen,

A built package is available for download here https://github.com/tarsjoris/x-air/packages/1892157

jeffensen commented 1 month ago

Thank you!

Now I ran into a new issue. When I start the built proxy tool package (step 5), I always get the following error (see below). I have a wifi router which runs DHCP and gives static IPs to the XR18 (192.168.0.100) and to my PC and to the X-Touch. The error appears no matter if the XAir Edit App is already connected to the XR18 or not. I also checked: no other service is using the IP address and port of the XR18.

EDIT: it does not seem to be related to the IP address. If I change the IP address of the XR18 in xtouch.properties to some arbitrary address not used in the network, I still get exactly the same error.

java -jar proxy-3.1-20230701.154203-2-jar-with-dependencies.jar

Use XAiR XR18 device at 192.168.0.100
Exception in thread "main" java.net.BindException: Address already in use: bind
        at java.base/sun.nio.ch.Net.bind0(Native Method)
        at java.base/sun.nio.ch.Net.bind(Net.java:565)
        at java.base/sun.nio.ch.DatagramChannelImpl.bindInternal(DatagramChannelImpl.java:1347)
        at java.base/sun.nio.ch.DatagramChannelImpl.bind(DatagramChannelImpl.java:1317)
        at java.base/sun.nio.ch.DatagramSocketAdaptor.bind(DatagramSocketAdaptor.java:108)
        at java.base/java.net.DatagramSocket.createDelegate(DatagramSocket.java:1433)
        at java.base/java.net.DatagramSocket.<init>(DatagramSocket.java:328)
        at java.base/java.net.DatagramSocket.<init>(DatagramSocket.java:387)
        at java.base/java.net.DatagramSocket.<init>(DatagramSocket.java:353)
        at be.t_ars.xtouch.xctl.ConnectionWithXTouchImpl.<init>(ConnectionWithXTouchImpl.kt:18)
        at be.t_ars.xtouch.xctl.XctlConnectionStub.<init>(XctlConnectionStub.kt:11)
        at be.t_ars.xtouch.xctl.XctlConnectionProxy.<init>(XctlConnectionProxy.kt:6)
        at be.t_ars.xtouch.XAirEditProxyConnection.<init>(XAirEditProxyConnection.kt:21)
        at be.t_ars.xtouch.XAirEditProxyKt.main(XAirEditProxy.kt:95)
        at be.t_ars.xtouch.XAirEditProxyKt.main(XAirEditProxy.kt)
tarsjoris commented 1 month ago

Hi jeffensen, This means that port 10111 is already in use. The XTouch always connects to port 10111, so this is what the proxy has to listen on. Is there another program that is using the port already?

jeffensen commented 1 month ago

Hi tarsjoris, thanks. according to TCPView, the port is not in use. However, I now get a different error message and cannot really say what was causing it as I did not really change anything. The IPs provided by the DHCP are still 192.168.0.100 (XR18 mixer), 192.168.0.101 (pc) and 192.168.0.102 (xtouch):

java -jar proxy-3.1-20230701.154203-2-jar-with-dependencies.jar

Use XAiR XR18 device at 192.168.0.100
2024-09-23 11:37:47.427 [main] INFO  ktor.application - Autoreload is disabled because the development mode is off.
Starting ktor netty
2024-09-23 11:37:47.552 [main] INFO  ktor.application - Responding at http://192.168.0.4:8080
Exception in thread "main" java.net.BindException: Cannot assign requested address: bind
        at java.base/sun.nio.ch.Net.bind0(Native Method)
        at java.base/sun.nio.ch.Net.bind(Net.java:565)
        at java.base/sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:344)
        at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:301)
        at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:550)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334)
        at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)
        at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)
        at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973)
        at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:248)
        at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.ktor.server.netty.EventLoopGroupProxy$Companion$create$factory$1$1.run(NettyApplicationEngine.kt:241)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:1575)
tarsjoris commented 1 month ago

Hi jeffensen,

That probably means that port 8080 is in use, which is used to allow controlling a monitor-mix via a webpage. You probably won't use this initially, so you can disable it in ~/xtouch/xtouch.properties. If you add the following line, it will no longer start a webserver on port 8080. webrelay.enabled=false

jeffensen commented 1 month ago

Hi jeffensen,

That probably means that port 8080 is in use, which is used to allow controlling a monitor-mix via a webpage. You probably won't use this initially, so you can disable it in ~/xtouch/xtouch.properties. If you add the following line, it will no longer start a webserver on port 8080. webrelay.enabled=false

Thanks, that solved the issue!