rust-ptouch icon indicating copy to clipboard operation
rust-ptouch copied to clipboard

Cannot get status of PTouch e550w

Open baudetromain opened this issue 3 years ago • 17 comments

Hello, First of all, thank you for this repository. I've been struggling with a few different library to make some Brother printers to print properly, and this one worked quite well.

However, I got stuck for quite some time before I finally managed to print something, and that's why I'm opening an issue here. It may be a bug, or it may be that the printer I used is broken/misconfigured. I don't really know. I'm gonna describe my toolchain and the problem I got, and I'm also gonna explain the workaround I made to finally be able to print, in case some people get the same bug than me.

TL;DR

I have a brother pt-e550w printer, and I'm trying to use this program to print things with it, but I get a timeout when the program tries to read the answer of a status request sent to the printer.

Since both the problem and the workaround are complex, this issue is very long. I'm sorry about that, but I guess it is better if I give all the details.

Toolchain used

I am working on windows, and I am using WSL2 for almost all my toolchains. I want to be able to plug my pt-e550w to my computer and print something. The command for that would be: cargo run -- --log-level debug --device pt-e550w print qr-text "hello" "hello friend". However, WSL2 does not have natively access to the USB devices plugged to the computer. If I use the lsusb command while the printer is plugged in, I get the following result:

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Fortunately, there exist a piece of software to forward the USB traffic from windows to WSL over a local network interface (some kind of USB over IP). I found it here: https://devblogs.microsoft.com/commandline/connecting-usb-devices-to-wsl/ I installed the required tools, and listed the devices on windows with the usbipd wsl list command in a windows terminal. Here's the result:

> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
2-3    04f9:2060  USB Printing Support                                          Not attached
2-4    1bcf:0005  USB Input Device                                              Not attached
2-8    13d3:56ba  Integrated Camera, Integrated IR Camera                       Not attached
2-9    06cb:00bd  Synaptics UWP WBDI                                            Not attached
2-10   8087:0aaa  Intel(R) Wireless Bluetooth(R)                                Not attached

Then, using the usbipd wsl attach --busid 2-3 command in the windows console, I can make the printer visible in wsl:

 > usbipd wsl attach --busid 2-3
usbipd: info: Using default distribution 'Ubuntu'.

Then, in wsl console:

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 04f9:2060 Brother Industries, Ltd PT-E550W
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Until then, everything's fine. I should be able to print now.

The bug

When trying the cargo run -- --log-level debug --device pt-e550w print qr-text "hello" "hello friend" command, I got this result:

$ cargo run -- --log-level debug --device pt-e550w print qr-text "hello" "hello friend"
warning: unused borrow that must be used
   --> src/commands.rs:138:9
    |
138 |         &buff[7..11].copy_from_slice(&raster_bytes);
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
    |
    = note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
    |
138 |         let _ = &buff[7..11].copy_from_slice(&raster_bytes);
    |         +++++++

warning: `ptouch` (lib) generated 1 warning
    Finished dev [unoptimized + debuginfo] target(s) in 1.90s
     Running `target/debug/ptouch-util --log-level debug --device pt-e550w print qr-text hello 'hello friend'`
09:41:54 [DEBUG] (1) ptouch_util: Connecting to PTouch device: Options { device: PtE550W, index: 0, no_reset: false, usb_no_claim: false, usb_no_detach: false }
09:41:54 [DEBUG] (1) ptouch: Found matching devices: [(Bus 001 Device 003: ID 04f9:2060, DeviceDescriptor { bLength: 18, bDescriptorType: 1, bcdUSB: 272, bDeviceClass: 0, bDeviceSubClass: 0, bDeviceProtocol: 0, bMaxPacketSize: 64, idVendor: 1273, idProduct: 8288, bcdDevice: 256, iManufacturer: 1, iProduct: 2, iSerialNumber: 3, bNumConfigurations: 1 })]
09:41:54 [DEBUG] (1) ptouch: Error opening device
Error: Error connecting to PTouch: Usb(Access)

Looks like I need root privileges to access the USB device. Ok, let's adapt the command then: sudo target/debug/ptouch-util --log-level debug --device pt-e550w print qr-text "hello" "hello friend":

$ sudo target/debug/ptouch-util --log-level debug --device pt-e550w print qr-text "hello" "hello friend"
09:43:23 [DEBUG] (1) ptouch_util: Connecting to PTouch device: Options { device: PtE550W, index: 0, no_reset: false, usb_no_claim: false, usb_no_detach: false }
09:43:23 [DEBUG] (1) ptouch: Found matching devices: [(Bus 001 Device 003: ID 04f9:2060, DeviceDescriptor { bLength: 18, bDescriptorType: 1, bcdUSB: 272, bDeviceClass: 0, bDeviceSubClass: 0, bDeviceProtocol: 0, bMaxPacketSize: 64, idVendor: 1273, idProduct: 8288, bcdDevice: 256, iManufacturer: 1, iProduct: 2, iSerialNumber: 3, bNumConfigurations: 1 })]
09:43:23 [DEBUG] (1) ptouch: Checking for active kernel driver
09:43:23 [DEBUG] (1) ptouch: Kernel driver inactive
09:43:23 [DEBUG] (1) ptouch: Claiming interface
09:43:23 [DEBUG] (1) ptouch: WRITE: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
09:43:23 [DEBUG] (1) ptouch: WRITE: [1b, 40]
09:43:23 [DEBUG] (1) ptouch_util: Connected! fetching status...
09:43:23 [DEBUG] (1) ptouch: WRITE: [1b, 69, 53]
Error: Operation timeout

This is where the bug happens: the program found the printer, sent data to it, then sent a status request, but when trying to fetch the response, a timeout happened. Going into the code, I found out the exact error happened in the status method of lib.rs, line 332:

pub fn status(&mut self) -> Result<Status, Error> {
    // Issue status request
    self.status_req()?;

    // Read status response
    let d = self.read(self.timeout)?;

    // Convert to status object
    let s = Status::from(d);

    debug!("Status: {:02x?}", s);

    Ok(s)
}

The status_req method just writes the status request hex code in the USB connection:

fn status_req(&mut self) -> Result<(), Error> {
    self.write(&[0x1b, 0x69, 0x53], self.timeout)
}

This method does not fail, but the call to self.read does. The read method tries to read as much bytes as the length of the buffer (32 bytes in our case), and if the number of read bytes is not 32, it returns Err(Error::Timeout).

fn read(&mut self, timeout: Duration) -> Result<[u8; 32], Error> {
    let mut buff = [0u8; 32];

    // Execute read
    let n = self.handle.read_bulk(self.stat_ep, &mut buff, timeout)?;

    if n != 32 {
        return Err(Error::Timeout)
    }

    // TODO: parse out status?

    Ok(buff)
}

That's exactly what is happening. Since the call to read is placed before a ? operator, the error will be propagated, and later the program will see the status fetching was unsuccessfull, and therefore stop itself.

Thoughts about this behaviour

I really don't know why isn't the printer responding via USB. I've checked the printer's documentation to see if there's any way to enable or disable the USB responses, but I didn't find anything. I haven't found any similar issue reported on the internet.

One of the possibility is that the USB over IP software to bind the USB ports to WSL doesn't allow read and write, but I've asked a friend who used it by the past and he said he hasn't been experiencing any issue with it. With this in mind, I tried running a Ubuntu 22.04 virtual machine in VMware to run the program, since the USB mapping from windows to a virtual machine is reliable (at least I never had problems with it). Sadly, the result was exactly the same.

At some point, I got the idea of running the program directly on windows instead of WSL. I installed all the rust toolchain on windows via rustup, and compiled and run the program again, with the same command: cargo run -- --log-level debug --device pt-e550w print qr-text "hello" "hello friend". I got another error this time:

> cargo run -- --log-level debug --device pt-e550w print qr-text "hello" "hello friend"
warning: unused borrow that must be used
   --> src\commands.rs:138:9
    |
138 |         &buff[7..11].copy_from_slice(&raster_bytes);
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
    |
    = note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
    |
138 |         let _ = &buff[7..11].copy_from_slice(&raster_bytes);
    |         +++++++

warning: `ptouch` (lib) generated 1 warning
    Finished dev [unoptimized + debuginfo] target(s) in 0.15s
     Running `target\debug\ptouch-util.exe --log-level debug --device pt-e550w print qr-text hello "hello friend"`
12:03:21 [DEBUG] (1) ptouch_util: Connecting to PTouch device: Options { device: PtE550W, index: 0, no_reset: false, usb_no_claim: false, usb_no_detach: false }
12:03:21 [DEBUG] (1) ptouch: Found matching devices: [(Bus 002 Device 011: ID 04f9:2060, DeviceDescriptor { bLength: 18, bDescriptorType: 1, bcdUSB: 272, bDeviceClass: 0, bDeviceSubClass: 0, bDeviceProtocol: 0, bMaxPacketSize: 64, idVendor: 1273, idProduct: 8288, bcdDevice: 256, iManufacturer: 1, iProduct: 2, iSerialNumber: 3, bNumConfigurations: 1 })]
12:03:21 [DEBUG] (1) ptouch: Error opening device
Error: Error connecting to PTouch: Usb(NotSupported)

Running it in a console with admin privileges led to the same message. After diving inside the code again, I found the origin of the error: the util.rs file, at line 128, tries to call the new function of the PTouch struct. The new function will call the call_with_context function of lib.rs, which will, at line 188, try to start a connection with the device by calling the open method on it. In case of error, a debug message will be printed, and the function will return the error returned by open:

let mut handle = match device.open() {
    Ok(v) => v,
    Err(e) => {
        debug!("Error opening device");
        return Err(e.into());
    }
};

The open method can return a rusb::error, and among those errors is rusb::error::NotSupported, which means "Operation not supported or unimplemented on this platform.", according to the documentation. But the device is an instance of the rusb::Device struct from the rusb crate, so if the error comes from this crate, it is beyond the scope of this repository. But still, it seems that this ptouch driver does not work on windows. I'm running windows 11 by the way.

Workaround

I needed to get the printing to work. What I then did is that I created an alternative method to get_status, which I called get_status_mocked. The goal was to build an instance of the Status struct ith the printer informations and to return it. The needed informations about the status can be found in the pt-e550w manual, section 4. Printing command details, Status command. image My function was like this:

pub fn status_mock(&mut self) -> Result<Status, Error> {
    Ok(Status {
        model: 0x66,
        error1: Error1::empty(),
        error2: Error2::empty(),
        media_width: 12,
        media_kind: MediaKind::LaminatedTape,
        status_type: DeviceStatus::Completed,
        phase: Phase::Editing,
        tape_colour: TapeColour::White,
        text_colour: TextColour::Black
    })
}

Warning: if you try to do the same workaround, you might need to change some fields, depending on your printer (the model, the tape colour, the media width, etc). I then edited the line 133 of util.rs to call status_mock instead of status:

let status = pt.status_mock()?;

After this change, I tried to cargo build again, and to run the program again with sudo target/debug/ptouch-util --log-level debug --device pt-e550w print qr-text "hello" "hello friend": the printer printed the expected qr code and text ! (I'm not giving the output because it is very long since all the data sent to the printer are logged).

Conclusion

With the workaround, the printing function now works. However, if someone gets stuck on the same problem than me in the future, this issue should contain enough information to help them.

In the end, maybe what I'm experimenting is not a problem with this program, but with rusb ; if that's the case, then I'm sorry, but I still wanted to report it.

That's actually the first GitHub issue on an open source project I've ever written, If some information are missing, please tell me.

baudetromain avatar Jul 19 '22 12:07 baudetromain

hey thanks for the issue, and a great collection of detail! my only feedback would be that it can be useful to use collapse to hide large embeds etc. so it looks less long and scary. fortunately i think this looks like a familiar USB nightmare 😅

depending on your platform you often have to perform -slightly different- operations to connect to a USB device... i suspect some cobination of the secret --usb-no-claim and --usb-no-detach flags should get you connected. you might find this configuration useful, and it's probably worth porting the correct defaults over here if you're interested.

to run directly under windows you probably also need to use zadig to install the libusb driver for your device (i would not expect this requirement exists for USB passthrough into WSL). also make sure your power plan is set to performance, and it might make sense to increase the timeouts (i'm not sure why this isn't configurable in the Options object but i'd be happy to accept a PR including that too.)

ryankurte avatar Jul 20 '22 06:07 ryankurte

Thanks for your help !

Sadly, I tried the things you suggested here, and none of them worked: trying the different combinations of --usb-no-claim and --usb-no-detach led to the same result, and despite installing USB drivers on the printer with zadig, the result on windows is still NotSupported. About the windows drivers, Brother's website provides various things to download such as drivers and firmware update tools for its printers, so before installing other drivers with zadig, I had the driver for my printer model installed, and the printer was appearing in the windows printer lists, and now it is not. I am not sure if this does mean anything though.

Increasing the default timeout did not change anything (though it was worth trying), because the device is not blocked while trying to read or write, and so even with a timeout of 5 seconds, the read and write methods are fast to execute.

I think you are right : I am into the USB nightmare 🥲

At this point I am starting to think it might be a problem coming for the printer ; the thing is I've had two brother printers to configure, a pt-p950nw and a pt-e550w ; with the pt-p950nw, I was communicating by wifi instead of USB. The messages to send are the same than by USB (hex codes for instructions that are detailed in the manual), but they have to be sent into a TCP socket on a certain port. Turns out I tried to send a status request and read the response (by reading in the socket), but the printer never responded. I got stuck on that problem for quite some time, and a guy on stackoverflow complained about the same problem some time ago. He ended up calling the brother client support, who he blamed for being bad, because they told him that the communication was not bi-directionnal, even though what is written in the manual about the status command seems to imply the opposite. So I gave up and found a workaround: the printer is hosting an HTTP server on the port 80, and the only page it serves is a page describing the printer status in a human-readable way ; I then scrapped this web page to get the printer status. Even though this time it isn't about a network connection, the problem is actually pretty similar.

Since I now use another solution to print things, I think I will give up on trying to solve this probem (at least for now). I was kinda frustrated that the printer doesn't respond, and I still am, but I'm losing too much time at this point. Thank you very much for the help though !

Also, I tried to add the possibility to pass the timeout as an argument to the command, and I think it works without breaking anything. I'm gonna bring this to a fork and open a PR I think.

baudetromain avatar Jul 20 '22 14:07 baudetromain

Since I now use another solution to print things, I think I will give up on trying to solve this probem (at least for now). I was kinda frustrated that the printer doesn't respond, and I still am, but I'm losing too much time at this point. Thank you very much for the help though !

fair enough / i'm sorry it hasn't been smooth! we could also add a flag to bypass the status check if that'd be -enough- to get it running for you?

i only have the PT-P710BT (there aren't protocol differences between these..?), but i'll see if i can find some time to have a look at that on windows too

ryankurte avatar Jul 20 '22 21:07 ryankurte

Adding a flag to avoid status check looks like a great idea, so I tried to add it, and I think I managed to do so. I'm probably gonna open another PR :) Also, while doing this, I've found something that looks like a mistake in the code, and I've opened an issue describing it: #33. This was quick and easy to fix, and is included in the PR I'm gonna open.

baudetromain avatar Jul 21 '22 12:07 baudetromain

have you been able to print using your E550W using v0.2.2?

all i'm getting from mine is it spitting out an 18mm piece (notably, the same behaviour i got from adding the E550W USB Product ID to ptouch-print)

also note: ptouch-print has no trouble getting the status from the E550W

evils avatar Mar 23 '23 09:03 evils

It's been months since I didn't print anything actually, I was in an internship when I opened this issue, I needed to get my work's printer to work. Now that the internship is over, I don't have access to the printer, so I can't try, I'm sorry.

baudetromain avatar Mar 23 '23 17:03 baudetromain

But if you have any question about the issue I got so that you can solve yours, I'll be glad to help you if I can! (I don't remember all the details though)

baudetromain avatar Mar 23 '23 17:03 baudetromain

@Natsukooh I can get the printer to spit out white pieces of laminated tape, but no text. Do you have any idea why?

EDIT: I've tried both with the patch in this issue + using --no-status-fetch flag which was added.

eyjhb@jhbws01 /t/rust-ptouch (main)> doas ./target/debug/ptouch-util --log-level debug --device pt-e550w --no-status-fetch print text "Hello World!" --font 12x16                                                            cargo ptouch-print rustc SDL SDL2 
13:06:57 [DEBUG] (1) ptouch_util: Connecting to PTouch device: Options { device: PtE550W, index: 0, timeout_milliseconds: 500, no_reset: false, usb_no_claim: false, usb_no_detach: false, no_status_fetch: true }
13:06:57 [DEBUG] (1) ptouch: Found matching devices: [(Bus 001 Device 010: ID 04f9:2060, DeviceDescriptor { bLength: 18, bDescriptorType: 1, bcdUSB: 272, bDeviceClass: 0, bDeviceSubClass: 0, bDeviceProtocol: 0, bMaxPacketSize: 64, idVendor: 1273, idProduct: 8288, bcdDevice: 256, iManufacturer: 1, iProduct: 2, iSerialNumber: 3, bNumConfigurations: 1 })]
13:06:57 [DEBUG] (1) ptouch: Checking for active kernel driver
13:06:57 [DEBUG] (1) ptouch: Kernel driver inactive
13:06:57 [DEBUG] (1) ptouch: Claiming interface
13:06:57 [DEBUG] (1) ptouch: WRITE: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 40]
13:06:57 [INFO] Connected! status request disabled, using default status...
13:06:57 [INFO] Device status (default one used): Status { model: 0, error1: (empty), error2: (empty), media_width: 12, media_kind: LaminatedTape, status_type: Completed, phase: Editing, tape_colour: White, text_colour: Black }
13:06:57 [DEBUG] (1) ptouch::render: Textbox: TextBox { text: "Hello World!", bounds: Rectangle { top_left: Point { x: 16, y: 0 }, bottom_right: Point { x: 161, y: 70 } } }
Raster display size: Size { width: 179, height: 70 } output area: (29, 70, 29)
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 69, 61, 01]
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 69, 21, 00]
13:06:57 [DEBUG] (1) ptouch::commands: Set print info: PrintInfo { kind: None, width: Some(12), length: Some(0), raster_no: 179, recover: true }
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 69, 7a, 8c, 00, 0c, 00, b3, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch::commands: Set various mode: AUTO_CUT
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 69, 4d, 40]
13:06:57 [DEBUG] (1) ptouch::commands: Set advanced mode: NO_CHAIN
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 69, 4b, 08]
13:06:57 [DEBUG] (1) ptouch::commands: Set margin: 0
13:06:57 [DEBUG] (1) ptouch: WRITE: [1b, 69, 64, 00, 00]
13:06:57 [DEBUG] (1) ptouch::commands: Set compression mode: None
13:06:57 [DEBUG] (1) ptouch: WRITE: [4d, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, c0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, c0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, c0, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, c0, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, c0, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, c0, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0f, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0f, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, c0, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, c0, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, f0, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 0c, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 03, 0c, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, fc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, ff, cc, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch: WRITE: [47, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
13:06:57 [DEBUG] (1) ptouch::commands: Print feed command
13:06:57 [DEBUG] (1) ptouch: WRITE: [1a]
13:06:59 [DEBUG] (1) ptouch::commands: Status: Status { model: 128, error1: (empty), error2: (empty), media_width: 12, media_kind: LaminatedTape, status_type: PhaseChange, phase: Editing, tape_colour: White, text_colour: Black }
13:06:59 [DEBUG] (1) ptouch: Started printing
13:07:02 [DEBUG] (1) ptouch::commands: Status: Status { model: 128, error1: (empty), error2: (empty), media_width: 12, media_kind: LaminatedTape, status_type: PhaseChange, phase: Editing, tape_colour: White, text_colour: Black }
13:07:02 [DEBUG] (1) ptouch: Started printing
13:07:04 [DEBUG] (1) ptouch::commands: Status: Status { model: 128, error1: (empty), error2: (empty), media_width: 12, media_kind: LaminatedTape, status_type: Completed, phase: Editing, tape_colour: White, text_colour: Black }
13:07:04 [DEBUG] (1) ptouch: Print completed

eyJhb avatar Jun 22 '23 13:06 eyJhb

Nevermind, it started to work. I have no clue why. Thanks! The --no-status-fetch option works :)

eyJhb avatar Jun 22 '23 13:06 eyJhb

Hello @eyJhb, I'm glad that you got your printer to work :)

I'd like to know, did you use the --no-status-fetch option because it didn't work without it, or is your printer working even when you're not using the option ? If so, what is the model of the printer you use ?

I'm just curious about this because I've still not figured out why the printer I used would not print without the --no-status-fetch option, even though I don't work for the company I used to work for and I don't have access to the printer I used at the time I opened the issue :sweat_smile:

baudetromain avatar Jul 03 '23 09:07 baudetromain

I can confirm that it only spits out a 18mm blank piece with: ptouch-util --log-level debug --device pt-e550w --media tze6mm --no-status-fetch print text "hello"

Wassasin avatar Aug 29 '23 10:08 Wassasin

I installed the Windows app & driver, installed USBPCAP and pulled a trace if anyone wants to take a crack at debugging: https://drive.google.com/file/d/1uJMUousatCxXAX5_chQgZCzDGKbfKgcy/view?usp=sharing

Wassasin avatar Aug 29 '23 11:08 Wassasin

I had a similar problem connecting to my e550W, this fix worked for me: https://github.com/ryankurte/rust-ptouch/pull/52

cortex avatar Mar 26 '24 13:03 cortex

Can confirm I also got things printing with #52, though with somewhat varying success. For example, using a template seems to print blank tape, but using the "qr_text" option works fine.

kamnxt avatar Aug 20 '24 14:08 kamnxt

weird, it's possible that the template isn't working right it (which you can check with render or preview if you're on a platform with support)?

ryankurte avatar Aug 20 '24 21:08 ryankurte

The preview works fine all the time actually. Often it seems like maybe it's just trying to print a zero length label? As in, it cuts off the length between the blade and print head, but only that?

kamnxt avatar Sep 03 '24 13:09 kamnxt

Ok this is kinda funny, there seem to be two different bugs here? Sometimes when trying to print with ptouch-util it just snips off a short bit of the label and spits it out. Other times you can hear it cutting but it doesn't even feed. When that happens, and I switch the printer over to a VM running Brother P-touch Editor and try to print from there, that doesn't work either, and also just does a cut??? Disconnecting and restarting the printer fixes this, but it seems like we are setting something incorrectly in a way that even their own GUI didn't expect.

kamnxt avatar Sep 03 '24 15:09 kamnxt