Embroidery format U??
U?? is called FDR internally in some documentations. Barudan stitch information. Usually these are .u01 files, sometimes .u00 the scheme is apparently permitted to go up to .u99.
- .U01 contains command, stitch triplet data.
- .U01 contains commands for SLOW, FAST (in both stitched and unstitched forms)
Header
The header comes in two parts.
Part A
Type | Bytes | Value | Description |
---|---|---|---|
`char` | 128 | "0" | 0x30 the ascii character 0, 128 times. |
- 128 copies of 0x30 "0" characters for an unknown reason.
Part B
- Some basic extends information.
- Stitch Count
- Some unknown data for machine edited.
- Some flag and information pointing to teach commands
Type | Bytes | Value | Description |
---|---|---|---|
`s16` | 2 | -X | Left |
`s16` | 2 | -Y | - Bottom (in y-flipped) |
`s16` | 2 | +X | Right |
`s16` | 2 | +Y | - Top (in y-flipped) |
`u32` | 2 | 0 | Unknown only seen (0) |
`u32` | 2 | count_commands | Stitch Data Count, (if multiplied by 3 will give the length of body) |
`u16` | 2 | x_final | Final X position |
`u16` | 2 | y_final | Final Y position (-Y if we're y-flipped) |
Many software packages will write nothing else, just pad with zeros. However machine edited formatting will have some additional data.
Type | Bytes | Value | Description |
---|---|---|---|
`s16` | 2 | D0 07 | 2000 in little endian 16. |
`s16` | 2 | 00 00 | 0 |
`u16` | 2 | unknown (01 00) | 1 ? |
`u16` | 2 | (2B 00) | (01 00 ) | 44, 43, 1? (Several values seen) |
`u16` | 2 | (23 00) | (0B 00) | 16, 35, 11 ? (Several values seen) |
`u16` | 2 | unknown (0F 00) | 15 ? |
`u16` | 2 | unknown 00 00 | Only seen 00 00 |
The 3rd row is more consistent.
Type | Bytes | Value | Description |
---|---|---|---|
`s16` | 2 | 01 FE | Dunno |
`s16` | 2 | 02 FD | Dunno |
`u16` | 2 | 04 00 | Dunno |
`u16` | 2 | Mod_Count | little endian declaration of the number of modification commands. |
`u16` | 2 | position_of_teach_block | Gives the position in the file of the commands in the mod_count |
Note that in the Teach Block, the same 6 bytes are always repeated a little into the block. And the mod count. The position given by the position_of_teach_block is exactly to the commands within the teach block.
The remainder of the 128 byte section is padded with 0x00 data.
Body
The body starts at position 0x100 (256)
The body consists of encoded stitches. The stitches are in:
Control, X, Y form.
BYTE | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
1 | 1 | -y | -x | c | c | c | c | c |
2 | y | y | y | y | y | y | y | y |
3 | x | x | x | x | x | x | x | x |
The control byte contains an always set value, followed by 2 bits of directional information for the Y, X values (whether they are + or -), then five bytes of control.
Value | Command | Operation |
---|---|---|
0 | Stitch | Normal Stitch |
1 | Jump | Jump Stitch |
2 | Fast | Fast invoke, Normal Stitch |
3 | Fast, Jump | Fast invoke, Jump Stitch |
4 | Slow | Slow invoke, Normal Stitch |
5 | Slow, Jump | Slow invoke, Jump Stitch |
6 | T1 | Top Thread Trim (this is not typically used) |
7 | T2 Trim | This is what most all encodings use for trim. |
8 | C00 STOP | Stop the machine. |
9 | C01 Needle 1 | Use needle 1, color change if necessary |
10 | C02 Needle 2 | Use needle 2, color change if necessary |
11 | C03 Needle 3 | Use needle 3, color change if necessary |
12 | C04 Needle 4 | Use needle 4, color change if necessary |
13 | C05 Needle 5 | Use needle 5, color change if necessary |
14 | C06 Needle 6 | Use needle 6, color change if necessary |
15 | C07 Needle 7 | Use needle 7, color change if necessary |
16 | C07 Needle 8 | Use needle 8, color change if necessary * Not typically used, some machines don't have this. |
17 | C07 Needle 9 | Use needle 9, color change if necessary * Not typically used, some machines don't have this. |
18 | End | This is often the terminal command. |
19 | Gp1 | Group 1 |
20 | Gp2 | Group 2 |
21 | Gp3 | Group 3 |
22 | Gp4 | Group 4 |
23 | Afrm | May be Roll-to-Roll Stop. It stops but with the needle penetrated, which was useful for some BEVT machines that used that functionality. |
31 | Rewind, Stop | Unsure what this properly does. But it is known to exist |
Teach Block
This section is rare and usually results from editing a file on an embroidery machine. This is always seen when the optional header info isn't zeroed out.
The embroidery machines these files are for have a mode called Teach. Where it allows the machine to reprogram the various specific commands given in the file. Apparently reprogramming the stops. If non-stops are reprogrammed they become stops. These commands clearly include Sequin. It's unclear how this is precisely encoded.
Embroidery Machine dumps of the edited files contain post-file information which apparently through some means edits the data within the body. This is usually called after the stop. It buffers 32 0x2B "+" bytes then has some string of bytes that identically to some in the header that previously was entirely zeros. 0xA0 - 0xA7.
Type | Bytes | Value | Description |
---|---|---|---|
`char` | 32 | "+" | 0x2B the ascii character +, 32 times. |
`s16` | 2 | 01 00 | Number 1 for some reason? |
`s16` | 2 | 01 FE | Dunno (same as in header) |
`s16` | 2 | 02 FD | Dunno (same as in header) |
`u16` | 2 | 04 00 | Dunno (same as in header) |
`u16` | 2 | Mod_Count | little endian declaration of the number of modification commands. |
`u32` | 4 * Mod_Count | 02 00 00 00 | 04 00 00 00 | usually 1, 2, 4 (these are the same numbers as in the dunno and header), might be a clue. |
Unknown Functions
There is some suggestion that the Group commands may be used to encode a lot of additional data setting a great many things on the embroidery machine. However it is not yet known how these are accessed, or if that belief is even warranted. The manuals suggest the following functions exist as functions and thus should be able to be encoded somehow. They can be put into the data but I dunno if that is in .u01 or some other format. There's a clear correlation with regard to known to exist commands. However since we only have 5 bits and 31 is the last possible command, there's nothing really to do here.
It has been confirmed that group commands do not use the subsequent command bytes to encode additional data. They may however use their own Y values in some regard.
The manual has an ambiguous footnote: *1 After G1:Group 1 ~ C15 are the Color Change Function Codes.
Function Codes | No. Code | Function |
---|---|---|
0 | 0 | Normal Stitch |
1 | JP | Jump Stitch |
2 | L | Low Speed |
3 | LJ | Low Speed Jump |
4 | H | High Speed |
5 | HJ | High Speed Jump |
6 | T1 | Top Thread Trimming |
7 | T2 | Bobbin Threading |
19 | G1 | Group 1 *footnote |
20 | G2 | Group 2 |
23 | SE | Sub End |
32 | C00 | Stop |
33 | C01 | Needle Bar 1 |
34 | C02 | Needle Bar 2 |
35 | C03 | Needle Bar 3 |
36 | C04 | Needle Bar 4 |
37 | C05 | Needle Bar 5 |
38 | C06 | Needle Bar 6 |
39 | C07 | Needle Bar 7 |
40 | C08 | Needle Bar 8 |
41 | C09 | Needle Bar 9 |
42 | C10 | Needle Bar 10 |
43 | C11 | Needle Bar 11 |
44 | C12 | Needle Bar 12 |
45 | C13 | Needle Bar 13 |
46 | C14 | Needle Bar 14 |
47 | C15 | Needle Bar 15 |
64 | S0 | Sequin OFF |
65 | S1 | Sequin ON |
67 | SJ | Sequin Jump |
68 | CC | Chain Stitch |
69 | CL | Loop Stitch |
70 | PR | Presser foot height |
71 | SPL | Normal Embroidery |
72 | ST1 | Taping & Cording Embroidery (R) |
73 | ST2 | Taping & Cording Embroidery (L) |
74 | SZ1 | Zigzag Embroidery (L) |
75 | SZ2 | Zigzag Embroidery (R) |
76 | SC1 | Coiling Embroidery (L) |
77 | SC2 | Coiling Embroidery (R) |
78 | LN | Nipple Movement |
79 | LZ | Zigzag Movement |
80 | HSP | Head Selection Pattern |
81 | FMP | The point of flame moving |
It's not clear what after means with regard to G1, these commands exist in the .u01 data and apparently the manual suggests there's an extended list.