marian-m12l / studio

STUdio - Story Teller Unleashed
https://marian-m12l.github.io/studio-website/
Mozilla Public License 2.0
694 stars 130 forks source link

Unsupported device metadata format version: 6 #450

Closed rguyonneau closed 3 months ago

rguyonneau commented 5 months ago

Describe the bug When plugin a brand new lunii, I have the error : Unsupported device metadata format version: 6

To Reproduce Steps to reproduce the behavior:

  1. Get a new Lunii (april 2024)
  2. Start the ./studio-web-ui-0.3.1/studio-linux.sh script
  3. Plug the Lunii and access the localhost:8080 url

Expected behavior No error and get the Lunii content

Screenshots not relevant

Logs Check the logs in the console for errors, if any. Join the studio-latest.log file if relevant.

2024-04-19 21:41:30,611 [INFO ] [studio.webui.service.StoryTellerService] [StoryTellerService.java:53]: Setting up story teller driver
2024-04-19 21:41:30,615 [DEBUG] [studio.driver.raw.RawStoryTellerAsyncDriver] [RawStoryTellerAsyncDriver.java:44]: Registering hotplug listener
2024-04-19 21:41:30,616 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:48]: Initializing libusb...
2024-04-19 21:41:30,623 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:64]: Hotplug is supported. Registering hotplug callback(s)...
2024-04-19 21:41:30,623 [DEBUG] [studio.driver.LibUsbAsyncEventsWorker] [LibUsbAsyncEventsWorker.java:32]: Starting worker thread to handle libusb async events...
2024-04-19 21:41:30,627 [DEBUG] [studio.driver.fs.FsStoryTellerAsyncDriver] [FsStoryTellerAsyncDriver.java:55]: Registering hotplug listener
2024-04-19 21:41:30,627 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:48]: Initializing libusb...
2024-04-19 21:41:30,628 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:64]: Hotplug is supported. Registering hotplug callback(s)...
2024-04-19 21:41:30,629 [DEBUG] [studio.driver.LibUsbAsyncEventsWorker] [LibUsbAsyncEventsWorker.java:32]: Starting worker thread to handle libusb async events...
2024-04-19 21:41:30,629 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:115]: Hotplug event callback (0483:a341): 1
2024-04-19 21:41:30,632 [DEBUG] [studio.driver.fs.FsStoryTellerAsyncDriver] [FsStoryTellerAsyncDriver.java:60]: Waiting for device partition...
2024-04-19 21:41:30,711 [INFO ] [studio.webui.MainVerticle] [MainVerticle.java:106]: Opening URL in default browser...
2024-04-19 21:41:30,831 [INFO ] [io.vertx.core.impl.launcher.commands.VertxIsolatedDeployer] [VertxIsolatedDeployer.java:81]: Succeeded in deploying verticle
2024-04-19 21:41:31,723 [INFO ] [studio.driver.fs.FsStoryTellerAsyncDriver] [FsStoryTellerAsyncDriver.java:69]: FS device partition located: /media/docker/LUNII
2024-04-19 21:41:31,730 [INFO ] [studio.webui.service.StoryTellerService] [StoryTellerService.java:113]: Device 2.x plugged
2024-04-19 21:41:31,741 [ERROR] [studio.webui.service.StoryTellerService] [StoryTellerService.java:118]: Failed to plug device 2.x
studio.driver.StoryTellerException: Unsupported device metadata format version: 6
    at studio.driver.fs.FsStoryTellerAsyncDriver.getDeviceInfos(FsStoryTellerAsyncDriver.java:122)
    at studio.webui.service.StoryTellerService$2.lambda$onDevicePlugged$1(StoryTellerService.java:115)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1728)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
2024-04-19 21:42:14,137 [ERROR] [studio.webui.MainVerticle] [MainVerticle.java:96]: Exception thrown
java.nio.channels.ClosedChannelException
    at io.netty.channel.AbstractChannel$AbstractUnsafe.newClosedChannelException(AbstractChannel.java:957)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.write(AbstractChannel.java:865)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.write(DefaultChannelPipeline.java:1367)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
    at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:112)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
    at io.netty.channel.ChannelDuplexHandler.write(ChannelDuplexHandler.java:115)
    at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.write(WebSocketServerExtensionHandler.java:151)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758)
    at io.vertx.core.net.impl.ConnectionBase.write(ConnectionBase.java:124)
    at io.vertx.core.net.impl.ConnectionBase.writeToChannel(ConnectionBase.java:205)
    at io.vertx.core.http.impl.Http1xServerConnection.writeToChannel(Http1xServerConnection.java:267)
    at io.vertx.core.net.impl.ConnectionBase.sendFileRegion(ConnectionBase.java:417)
    at io.vertx.core.net.impl.ConnectionBase.sendFile(ConnectionBase.java:444)
    at io.vertx.core.http.impl.Http1xServerConnection.sendFile(Http1xServerConnection.java:456)
    at io.vertx.core.http.impl.HttpServerResponseImpl.doSendFile(HttpServerResponseImpl.java:514)
    at io.vertx.core.http.impl.HttpServerResponseImpl.sendFile(HttpServerResponseImpl.java:433)
    at io.vertx.core.http.HttpServerResponse.sendFile(HttpServerResponse.java:365)
    at io.vertx.core.http.HttpServerResponse.sendFile(HttpServerResponse.java:351)
    at io.vertx.ext.web.handler.impl.StaticHandlerImpl.lambda$sendFile$11(StaticHandlerImpl.java:457)
    at io.vertx.ext.web.handler.impl.StaticHandlerImpl.wrapInTCCLSwitch(StaticHandlerImpl.java:266)
    at io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendFile(StaticHandlerImpl.java:392)
    at io.vertx.ext.web.handler.impl.StaticHandlerImpl.lambda$null$0(StaticHandlerImpl.java:231)
    at io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFileProps(StaticHandlerImpl.java:299)
    at io.vertx.ext.web.handler.impl.StaticHandlerImpl.lambda$sendStatic$1(StaticHandlerImpl.java:208)
    at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:330)
    at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
    at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
    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:497)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:829)
2024-04-19 21:42:14,352 [ERROR] [studio.webui.api.DeviceController] [DeviceController.java:34]: Failed to read device infos
java.util.concurrent.CompletionException: studio.driver.StoryTellerException: Unsupported device metadata format version: 6
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
    at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:670)
    at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658)
    at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2100)
    at studio.webui.service.StoryTellerService.deviceInfosV2(StoryTellerService.java:180)
    at studio.webui.service.StoryTellerService.deviceInfos(StoryTellerService.java:156)
    at studio.webui.api.DeviceController.lambda$apiRouter$3(DeviceController.java:31)
    at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1034)
    at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)
    at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:160)
    at io.vertx.ext.web.impl.RouterImpl.handleContext(RouterImpl.java:235)
    at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1034)
    at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)
    at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:160)
    at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.doEnd(BodyHandlerImpl.java:296)
    at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.end(BodyHandlerImpl.java:276)
    at io.vertx.ext.web.handler.impl.BodyHandlerImpl.lambda$handle$0(BodyHandlerImpl.java:87)
    at io.vertx.core.http.impl.HttpServerRequestImpl.onEnd(HttpServerRequestImpl.java:521)
    at io.vertx.core.http.impl.HttpServerRequestImpl.handleEnd(HttpServerRequestImpl.java:507)
    at io.vertx.core.http.impl.Http1xServerConnection.handleEnd(Http1xServerConnection.java:176)
    at io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:138)
    at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
    at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
    at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:232)
    at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:173)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
    at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:101)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:295)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: studio.driver.StoryTellerException: Unsupported device metadata format version: 6
    at studio.driver.fs.FsStoryTellerAsyncDriver.getDeviceInfos(FsStoryTellerAsyncDriver.java:122)
    at studio.webui.service.StoryTellerService.deviceInfosV2(StoryTellerService.java:179)
    ... 46 more
2024-04-19 21:42:14,354 [ERROR] [studio.webui.MainVerticle] [MainVerticle.java:96]: Exception thrown
java.util.concurrent.CompletionException: studio.driver.StoryTellerException: Unsupported device metadata format version: 6
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
    at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:670)
    at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658)
    at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2100)
    at studio.webui.service.StoryTellerService.deviceInfosV2(StoryTellerService.java:180)
    at studio.webui.service.StoryTellerService.deviceInfos(StoryTellerService.java:156)
    at studio.webui.api.DeviceController.lambda$apiRouter$3(DeviceController.java:31)
    at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1034)
    at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)
    at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:160)
    at io.vertx.ext.web.impl.RouterImpl.handleContext(RouterImpl.java:235)
    at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1034)
    at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:131)
    at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:160)
    at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.doEnd(BodyHandlerImpl.java:296)
    at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.end(BodyHandlerImpl.java:276)
    at io.vertx.ext.web.handler.impl.BodyHandlerImpl.lambda$handle$0(BodyHandlerImpl.java:87)
    at io.vertx.core.http.impl.HttpServerRequestImpl.onEnd(HttpServerRequestImpl.java:521)
    at io.vertx.core.http.impl.HttpServerRequestImpl.handleEnd(HttpServerRequestImpl.java:507)
    at io.vertx.core.http.impl.Http1xServerConnection.handleEnd(Http1xServerConnection.java:176)
    at io.vertx.core.http.impl.Http1xServerConnection.handleMessage(Http1xServerConnection.java:138)
    at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
    at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
    at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:232)
    at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:173)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
    at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:101)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:295)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: studio.driver.StoryTellerException: Unsupported device metadata format version: 6
    at studio.driver.fs.FsStoryTellerAsyncDriver.getDeviceInfos(FsStoryTellerAsyncDriver.java:122)
    at studio.webui.service.StoryTellerService.deviceInfosV2(StoryTellerService.java:179)
    ... 46 more
2024-04-19 21:45:11,382 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:92]: Stopping async event handling worker thread
2024-04-19 21:45:11,382 [INFO ] [studio.driver.LibUsbDetectionHelper] [LibUsbDetectionHelper.java:92]: Stopping async event handling worker thread

Desktop and environment (please complete the following information):

Additional context I have a docker installation to have everything working. My setup works well on an older Lunii (thank you very much by the way), it seems to be an issue with the new version of the firwmare (3.1.5)...

marian-m12l commented 3 months ago

New release 0.4.0 now supports v3 devices

rguyonneau commented 2 months ago

I worked! Thank you very much for your work!!