Documenting my iCraft story (this installment: iCraft faw down go boom)

Aside from the usual frustrations about not being able to define path order, today was going . . . well, I can’t say swimmingly, because LLIS is frustratingly awful in places. I’m writing out a List Of Weirdness in case anyone at Loklik is interested.

But I was at least getting labels produced fairly efficiently, once I had managed to get all the labels printed, and I had LLIS all set up to run the job. Carefully position it on the mat, insert it, hit Start, wait, eject the mat, peel off the label. put a new one on, etc., etc.

Until about an hour ago.

I’d just started another job when the iCraft abruptly noped out of consciousness, immediately after completing the print-and-cut registration sequence. It disconnected. I tried reconnecting. Couldn’t find the device. Checked all the connections and tried again. Couldn’t find the device. Quit LLIS, waited five minutes, started LLIS and tried again. Couldn’t find the device. Tried power-cycling the device as well—no luck. Tried disconnecting/reconnecting the USB cables. It’s on a dedicated hub—the iCraft is the only thing on that USB hub—so mayyyybe something had come loose. Tried again. Nope.

Plugged a different USB device into the hub, and that’s working. Tried plugging in the new device into the same port the iCraft was using—still works. It’s not the hub or the jack.

Between the time the iCraft was working just fine and the time it would no longer have anything to do with the world around it, I’d done nothing. No cable changes. No significant system loads. No software installs. Nothin’. Things had been working normally for the iCraft, as far as I could tell. Frankly, I was erring on the side of babying this thing, but . . . LLIS still claims that it can’t see it at all.

Again, I’d understand this somewhat if it were a WiFi or Bluetooth connection, but it’s a wired USB setup.

The cable? Tried that out with a different device, and the cable seems to work fine.

I tried shutting down LLIS and powering down the iCraft for ten minutes, then powering it back up and restarting LLIS. That didn’t change a thing—it’s just sitting there, refusing to respond in any way.

Hm.

Now, I know some of y’all are thinking, “Just reboot the computer, idiot,” but I have 46 (I counted) windows open with active work going on. Rebooting this system is not trivial. Or fast, since it’s my dad’s Mac—something I bought for him to replace the ten-year-old iMac he was still determined to drive into the ground.

(The iMac was so old it was no longer even getting security updates. Worse, it turned out that he’d gotten scammed the previous year, and had let a stranger from “Microsoft” log into his system remotely, and after that, things were seriously wrong with the system. So it really needed replacing.)

The thing is, I bought him a system scaled to his needs, which was mostly web-surfing and watching videos and getting into weird racist conspiracy theories. (I still don’t understand how he raised his son to not be like that—and yet. While I didn’t understand why he was going down that path, there was no talking with him about it, either.)

Whatever the case, when my own five-year-old MacBook Pro started acting up to an unsustainable degree, I started using his computer—and ouch. About a quarter of the memory I’m used to, a quarter of the diskspace, and everything is a lot more painful—but my work is complex, and I have all those windows open for a reason.

So yeah, I’d rather not reboot—but if the iCraft still is having nothing to do with me tomorrow morning, I guess I’ll grit my teeth, close everything out, and reboot. My worry, of course, is that it seems unlikely that it’ll solve the problem.

Of course, the iCraft has no diagnostic codes or any feedback mechanism other than LLIS. There’s nothing I can check “manually” by sending data to it, or otherwise trying to get any information at all from it—the only interface is LLIS, and it has no utilities at all for that sort of thing. Indeed, it’s pretty casual with the error messages, and just being told “can’t find it” isn’t actually helpful.

So I guess I’m done for the night, and rather concerned about whether I can get it working again. I didn’t smell smoke, it powers up and down just fine, it loads and unloads mats—it just refuses to communicate in any way.

Ugh. Okay. Guess I’ll turn in early tonight.

8 Likes

There is a system log in the Help section of the Idea Studio. Just make sure it’s in the current version of 2.4.1

4 Likes

my tips, 1/ check the firmware is up to date in LLiS (if not update it to latest firmware 6.0) 2/ close down LLiS 2/ a MAC reboot may be neccessary, do the usual wait 10 seconds before starting the MAC and then open the LLiS, hope you get back to creating soonest :grinning:
P.S reminder that LLiS is a new software and the tech team is constantly working on fixes and improvements.
just as a comparison, i was using Adobe Premier Pro yesterday and the sound vanished? just like that, i changed nothing but it was silent all the same? I am telling you this because even the biggest brand Adobe software can be finicky grr. I did fix it in the end.

5 Likes

OH, TIMMYTATION. GEEK MODE ENABLED.

Thank you for that. Holy cow.

Launching LLIS

The first thing I get in that day’s logfile is a debug message, which is fine, but then I get 28 error messages, telling me that LLIS’s attempts to load 14 specific language-properties files failed.

2025-05-10 14:48:55.438702: 2025-05-10 14:48:55.438677 [ERROR] TAG:Instance of 'LocaleManager' ||: Failed to load cache language at path /Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local: PathNotFoundException: Cannot open file, path = '/Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local/design_zh-CN.properties' (OS Error: No such file or directory, errno = 2)
2025-05-10 14:48:55.441676: 2025-05-10 14:48:55.441671 [ERROR] TAG:Instance of 'LocaleManager' ||: Failed to load cache language at path /Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local: PathNotFoundException: Cannot open file, path = '/Users/mcglk/Library/Caches/com.sjtech.loklikstudio/Local/design_zh-CN.properties' (OS Error: No such file or directory, errno = 2)
[...26 more lines elided; see below...]

for zh-CN (Chinese with simplified characters, de-CH (Swiss Standard German), es-MX (Mexican Spanish), fr-BE (French à la Belgium), it-IT (Italian), ko-KR (Korean), nl-NL (Dutch), tr-TR (Turkish), ru-RU (Russian), pt-PT (Portuguese), pt-BR (Brazilian Portuguese), ar-SA (Arabic), ja-JP (Japanese), and es-CL (Chilean Spanish).

I like that LLIS supports a lot of languages in theory, but these probably shouldn’t be considered “errors,” unless the system is set to one of those languages. I’m not sure why it’s trying to load them if my system locale is already running as en-US (American English).

I wonder why they didn’t come with the system installation. But that’s not relevant to my issue.

Then there’s this:

2025-05-10 14:48:55.648436: ZonedGuarded Error:MissingPluginException(No implementation found for method preventSleep on channel business_plugin)
2025-05-10 14:48:55.648534: ZonedGuarded Error:#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:320)
<asynchronous suspension>
#1      MethodChannelBusinessPlugin.preventSleep (package:business_plugin/business_plugin_method_channel.dart:20)
<asynchronous suspension>

I don’t actually know what this means, but there’s a hint there: At least part of LLIS is written in Dart, and a little investigation reveals that it’s using the Flutter UI library. (I tried to provide links for those, but the site wouldn’t let me for some reason.)

I wonder if Flutter is responsible for the odder user-interface choices that LLIS makes. Surely it works better than that? I don’t know; I haven’t programmed in Dart (yet).

Then a few debug messages from the CacheDataManager, then six error messages:

2025-05-10 14:48:55.937553: 2025-05-10 14:48:55.937545 [ERROR] TAG:UpdateCheckController ||: onInit
2025-05-10 14:48:55.996837: 2025-05-10 14:48:55.996827 [ERROR] TAG:UpdateCheckController ||: onready
2025-05-10 14:48:55.997089: 2025-05-10 14:48:55.997087 [ERROR] TAG:UpdateCheckController ||: checkVersion()
2025-05-10 14:48:55.997647: 2025-05-10 14:48:55.997646 [ERROR] TAG:UpdateCheckController ||: checkVersion() url=https://loklikideastudio.com/software_v2/software/app/getLatestVersionByType, queryParameters={softwareType: Mac, applicableAreas: OTHER, clientType: PC, versionNumber: v2.4.1}
2025-05-10 14:48:56.521140: [DEBUG] TAG:Instance of 'LocaleManager' ||: getLocaleFileFromSever: save complete
2025-05-10 14:48:56.732495: 2025-05-10 14:48:56.732475 [ERROR] TAG:UpdateCheckController ||: checkVersion() success:{code: 200, success: true, msg: Operation successful}
2025-05-10 14:48:56.733985: 2025-05-10 14:48:56.733978 [ERROR] TAG:UpdateCheckController ||: no update or update failed

These . . . aren’t error messages. Informational, sure—it’s telling me that some routines were successfully executed. But they shouldn’t be flagged as errors.

Then another debug message, and a couple more of these bogus “errors”:

2025-05-10 14:48:56.732495: 2025-05-10 14:48:56.732475 [ERROR] TAG:UpdateCheckController ||: checkVersion() success:{code: 200, success: true, msg: Operation successful}
2025-05-10 14:48:56.733985: 2025-05-10 14:48:56.733978 [ERROR] TAG:UpdateCheckController ||: no update or update failed

Then a string of DEBUG messages, with some bits in Chinese:

2025-05-10 14:48:56.782413: [DEBUG] TAG:VideoSource ||: 添加成功:/Users/mcglk/Library/Application Support/com.sjtech.loklikstudio/guide_video/d7aeaf4a5b17426f99c33b19cf284d9d.mp4
[...]
2025-05-10 14:49:28.154369: [DEBUG] TAG:Instance of 'LogUploader' ||: Resources\test 目录不存在: //Resources/test
[...]

The various Chinese I found, if you’re spelunking through your own logfiles, translate as

  • 添加成功: “Added successfully”
  • 目录不存在: “Directory does not exist”
  • 源文件不存在: “Source file does not exist”

Anyway, more debug messages come in over the next few seconds, and that’s basically it. I haven’t even powered the iCraft up yet. But let’s try that.

Powered up successfully, no additional messages. Let’s try connecting.

Nope. Completely failed to connect. Worse, there aren’t any log messages about it; only the error message in the interface that reads “No device available. Please research or check the USB connection.”

Well, poopers. That was not nearly as helpful as I’d hoped.

Let’s take a look at yesterday’s log, when everything went awry.

It starts out exactly the same way, with a smattering of errors, “errors,” and debug messages when LLIS starts up. LLIS, in fact, emits a lot of DEBUG messages. This doesn’t bother me, but a lot of them are fairly uninformative to someone unfamiliar with the code. They’re certainly not particularly human-friendly.

So here are the messages that occurred when my iCraft stopped; comments and translations will be supplied in 《this form》:

2025-05-09 20:24:21.073629: [DEBUG] TAG:DeviceTaskManager ||: saveTasks count: 1 userId: Je07qj3+UtOfMl+j0bvZrUUrqoODMYgPC1ULMqCxfBU=
2025-05-09 20:24:21.079336: [DEBUG] TAG:DeviceTaskManager ||: Saving tasks to /Users/mcglk/Library/Application Support/com.sjtech.loklikstudio/caches/deviceTasks.json
2025-05-09 20:25:06.172331: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage subDeviceConnectStatus
2025-05-09 20:25:06.177301: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:25:06.177945: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847506160343000","subject":"Event.Dev.ConnectStatus","content":{"connect_status":"DisConnection","device_id":"1746788261938307000"}}
《At this point, the device is disconnected; it had been working fine up to this point.》
2025-05-09 20:25:06.185284: [DEBUG] TAG:Instance of 'CutTaskProvider' ||: 设备断开连接《“Device disconnected”》
2025-05-09 20:25:06.185998: 2025-05-09 20:25:06.185923 [INFO] TAG:Instance of 'MessageInfoController' ||: 设备断开连接《“Device disconnected”》
2025-05-09 20:25:31.273365: [DEBUG] TAG:Instance of 'CutTaskListController' ||: onClose()
2025-05-09 20:25:44.820954: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式 《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:25:46.847751: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:25:46.848770: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847546847015000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:25:49.374335: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:25:51.391927: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:25:51.392868: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847551391485000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:26:23.276717: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:26:25.288809: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:26:25.289354: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847585288318000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:07.987108: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:27:10.012720: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:27:10.013858: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847630012157000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:11.593414: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:27:13.602491: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:27:13.603055: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847633602220000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:15.210131: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:27:17.216806: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:27:17.217586: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847637216448000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:27:19.759780: [DEBUG] TAG:<optimized out>#77397 ||: AppLifecycleState inactive
2025-05-09 20:27:46.344639: [DEBUG] TAG:<optimized out>#77397 ||: AppLifecycleState resumed
2025-05-09 20:27:48.661881: [DEBUG] TAG:Instance of 'OutputProvider' ||: getMaterialCutPadData:: device not connect
2025-05-09 20:27:52.653354: [DEBUG] TAG:Instance of 'MainWindowController' ||: onItemSelected() action:CommonToolAction.deviceConnect
2025-05-09 20:27:52.683558: 2025-05-09 20:27:52.683520 [ERROR] TAG:Instance of 'DeviceConnectController' ||: not selected device type, cannot get device tutorial
2025-05-09 20:28:03.300067: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:28:03.300976: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847683299459000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:28:50.524630: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:28:50.528406: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847730523687000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:29:02.769232: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:29:02.770141: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847742768761000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:29:21.645520: [DEBUG] TAG:Instance of 'DeviceSearchController' ||: logString 开始搜索设备, 方式《“Start searching for devices, by”》:ConnectMode.usb
2025-05-09 20:29:23.657572: [DEBUG] TAG:Instance of 'DeviceManager' ||: DeviceManage _initDevicesSubscription
2025-05-09 20:29:23.658488: [DEBUG] TAG:Instance of 'DeviceManager' ||: Device_Manager:DeviceEvent RCV: {"mid":"1746847763656955000","subject":"Resp.Disp","reply_mid":"ef6dd680-0216-4eba-8dda-8ccfdf8db075","reply_subject":"Dev.Discover","content":{"code":0,"data":{"active_device":[]},"message":"ok"}}
2025-05-09 20:29:26.981301: [DEBUG] TAG:Instance of 'OutputProvider' ||: getMaterialCutPadData:: device not connect
2025-05-09 20:29:31.701923: [DEBUG] TAG:Instance of 'MainWindowController' ||: onItemSelected() action:CommonToolAction.fileQuit
2025-05-09 20:29:31.856441: [DEBUG] TAG:Instance of 'GuideVideoUtils' ||: 销毁引导视频组件《“Destroy the boot video component”》:null
2025-05-09 20:29:33.873057: 退出关闭窗口了《“Exit close window”》...
2025-05-09 20:29:33.977745: 应用请求退出.《“The application requested to exit”》...2025-05-09 20:29:39.132374: [DEBUG] TAG:IniHelper ||: INI content synced to
Shared Preferences

Thing is, I didn’t actually quit LLIS at that point; I was still trying to connect, so I’m not sure what was up with that.

In any case, I did relaunch LLIS and all the other stuff I described in the above post, but there’s not that much additional information I can glean from this logfile.

Again: poopers.

I really want to work with the source code now. But for the moment, I’m not any closer to a solution.

7 Likes

I do have the latest firmware installed, so that’s likely not the issue.

Right now, I have some Actual Job to do, but I’ll reboot the Mac when I’m done with that and try again.

6 Likes

My Brain exploded with all that info :exploding_head::sweat_smile:

5 Likes

Your user level doesn´t allow you to use links. Go to announcements tag and search for this topic:
Building Trust Together | A Guide to LOKLiK’s User Trust Levels :star:

5 Likes

Those are errors — IS isn’t reading those files, although it seems to be trying. Maybe that’s helping the development team in ways we don’t know.

I wouldn’t expect that issue to be fully debugged at this stage. There were many problems with language handling, and it’s still under development. I don’t expect a work-in-progress to have a flawless logging system, since it’s evolving constantly — and I’d rather see the team focus on the important things instead of spending time debugging log files every time they change the code. Right now, those files are primarily for them.

They are, in fact — as I mentioned, IS isn’t reading those files, but rather the ones compiled into the build.

I understand your frustration right now, but that kind of coding feedback or question would be more effective if directed to the developer team. Maybe the admins can let us know what we can do with it. xdd

5 Likes