vl600: remove legacy notes and tool

This commit is contained in:
Aleksander Morgado
2022-12-06 22:47:48 +00:00
parent e96ea83f61
commit a4b6b33cf4
2 changed files with 0 additions and 567 deletions

View File

@@ -1,171 +0,0 @@
#! /bin/env python
# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details:
#
# Copyright (C) 2012 Red Hat, Inc.
#
import os
import sys
import select
import struct
import string
from termios import *
debug = False
def lg_pack(data, seqno):
l = len(data)
fmt = "<"
fmt += "I" # magic
fmt += "I" # sequence number
fmt += "I" # data length
fmt += "H" # MUX channel
fmt += "%ds" % l # AT data
# Packets always padded to 4-byte boundaries
sz = struct.calcsize(fmt)
padding = 0
if sz % 4 > 0:
padding = 4 - (sz % 4)
fmt += "%ds" % padding
return struct.pack(fmt, 0xa512485a, seqno, l, 0xf011, data, "\0" * padding)
def lg_unpack(data):
fmt = "<"
fmt += "I" # magic
fmt += "I" # sequence number
fmt += "I" # data length
fmt += "H" # MUX channel
fmt += "%ds" % (len(data) - 14) # AT data
(magic, seq, l, chan, resp) = struct.unpack(fmt, data)
resp = resp[:l]
if magic != 0xa512485a:
raise Exception("Bad magic: 0x%08x" % magic)
if chan != 0xf011:
print "Unhandled channel 0x%04x" % chan
# It appears that we're supposed to ignore any data after \r\n, or if
# we don't get a \r\n we ignore all of it. The modem adds random
# data to the end of the response, for example:
#
# > 5a 48 12 a5 08 00 00 00 0a 00 00 00 11 f0 41 54 2b 43 45 52 45 47 3f 0a
# < 5a 48 12 a5 4e 00 00 00 15 00 00 00 11 f0 2b 43 45 52 45 47 3a 20 30 2c 31 0d 0a 00 00 4f 4b 0d 0a 00 47 74
#
# where there's a trailing "00 47" (the 0x74 is not included in the packet
# due to the data length field). The trailing bytes appear totally random
# in value and length.
# status is last two bytes for most commands if there are trailing bytes
status = []
if (resp >= 2):
statbytes = resp[len(resp) - 2:]
status = [ ord(statbytes[0]), ord(statbytes[1]) ]
crlf = resp.rfind("\r\n")
if crlf == -1:
# if last char is a newline then it's probably an echo, otherwise status
if resp[len(resp) - 1:] == '\n':
status = []
resp = ""
else:
if crlf == len(resp) - 2:
status = []
resp = resp[:crlf + 2]
return (resp, status)
def dump_raw(data, to_modem):
if debug:
line = ""
if to_modem:
line += "> "
else:
line += "< "
for c in data:
line += "%02x " % ord(c)
print line
def make_printable(data):
p = ""
for c in data:
if c in string.printable and ord(c) >= 32 or c == '\n' or c == '\r':
p += c
else:
p += "<%02x>" % ord(c)
return p
#########################################
if len(sys.argv) != 2 and len(sys.argv) != 3:
print "Usage: %s <port> [--debug]" % sys.argv[0]
sys.exit(1)
if len(sys.argv) > 2 and sys.argv[2] == "--debug":
debug = True
fd = os.open(sys.argv[1], os.O_RDWR)
# read existing port attributes and mask the ones we don't want
attrs = tcgetattr(fd)
attrs[0] = attrs[0] & ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON) # iflag
attrs[1] = attrs[1] & ~OPOST # oflag
attrs[2] = attrs[2] & ~(CSIZE | PARENB) # cflag
attrs[3] = attrs[3] & ~(ECHO | ICANON | IEXTEN | ISIG) # lflag
# Set up the attributes we do want
attrs[2] = attrs[2] | CS8 # cflag
attrs[4] = B115200 # ispeed
attrs[5] = B115200 # ospeed
attrs[6][VMIN] = 1 # cc
attrs[6][VTIME] = 0 # cc
tcsetattr(fd, TCSAFLUSH, attrs)
infd = sys.stdin.fileno()
seqno = 0
while 1:
try:
rfd, wfd, xfd = select.select([ fd, infd ], [], [])
except KeyboardInterrupt:
print ""
break
if fd in rfd:
data = os.read(fd, 4096)
dump_raw(data, False)
(line, status) = lg_unpack(data)
if line:
print make_printable(line)
if (len(status) == 2):
if status[0] == 0x30 and status[1] == 0x0d:
print "OK\n"
elif status[0] == 0x34 and status[1] == 0x0d:
print "ERROR\n"
elif status[0] == 0x33 and status[1] == 0x0d:
print "ERROR\n"
else:
print "STAT: 0x%02x 0x%02x" % (status[0], status[1])
if infd in rfd:
line = os.read(infd, 512)
if line:
data = lg_pack(line, seqno)
seqno += 1
dump_raw(data, True)
os.write(fd, data)
os.close(fd)

View File

@@ -1,396 +0,0 @@
Device uses an LG L2000 LTE chip and a Qualcomm MDM6800A for CDMA/EVDO.
The firmware flasher tool speaks DIAG and includes a lot of LTE-related
NV items.
Device has two USB interfaces:
0 - Proprietary ethernet interface
1 - CDC-ACM serial port
The ACM port speaks a proprietary protocol that MUX-es traffic from the
following virtual interfaces (according to Windows):
0: LGE LTE DM Port
1: LGE USB Modem Port
2: LGE LTE RF Serial Port (com)
3: LGE CDMA USB Serial Port (com)
4: LGE CDMA USB GPS NMEA Port (com)
5: LGE CDMA LBS Serial Port (com)
MUX Header Format
-----------------
u32: magic, always [ 0x5a 0x48 0x12 0xa5 ]
u32: sequence number (unpaired; host and device use separate sequence numbers)
u32: length (not including this header, but including any padding)
u16: MUX channel (21 f0: CMD) (11 f0: AT)
<data>
Packets are 4-byte aligned with padding of zeros, and this padding is included
in the length given in the header.
AT commands may have trailing bytes outside the data length specified in the
header, obviously these should be ignored. AT commands may also have trailing
status bytes after the last 0x0D 0x0A which may take the place of OK and
ERROR in some AT commands. Status bytes include 0x30 0x0d (success) and
0x34 0x0d (unknown AT command).
CMD packets are terminated with a standard HDLC CRC-16 and 0x7E.
Known CMD numbers are:
0xf14a - network attach, ethernet port start (use DHCP and IPv6 RA)
AT SMS Indications
------------------
They appear out of nowhere without AT formatting:
MT MSG: "612804xxxx","13/02/13,19:27:11+00",73
Heyy it's Tiffany i uploaded some pics on my profile on www.hottsites.com
Misc AT command notes:
----------------------
+VZWMRUE: <entry>,<rat>,<band>,<channel>
%LCNWINFO: <rat>, <roam>, <1x>, <Ev>, <LTE>, <state>, <cause>, <PDNid>
%LCNWINFO: <rat>, <roam>, <1x>, <Ev>, <LTE>, <state>, <cause>
<rat> = 6:LTE
Reported AT Commands
--------------------
Firmware version VL600ZV8 reports the following supported AT commands in
response to an AT+CLAC query:
E0V1
HE1
E
Q
V
Z
&F
S3
S4
S5
CIMI
GCAP
CEER
CPAS
CSQ
CLAC
CGDCONT
CGDSCONT
CGTFT
CGATT
CGACT
CGCMOD
CGDATA
CGPADDR
CGEREP
CSCB
CSAS
CRES
CSDH
CEREG
CGEQOS
CGCONTRDP
CGSCONTRDP
CGTFTRDP
CGEQOSRDP
CGMI
CGMM
CGMR
CGSN
GSN
PWDT
PTIMER
PDMA
PSDRAM
PSMACTIVE
PSMT
PHIMLP
PURTTX
PURTRX
PURTCB
PFSEL
PFID
PFREAD
PFRW
PCSMWID
PCSMCP
PSYSC
PCPGB
PUETH
PUMDM1
PUMDM2
PI2C
PHIMULPATH
PHIMTX
PHIMTXPATH
PHIMSTOPTX
PCC5BOOT
PURTLOOPBACK
PMEMWRITE
PMEMREAD
PMUXLOOPBACK
PSQ
PHIMNC
PUESTATUS
PSWRESET
PRFCONTROL
PCMDBYPASS
PTM
PEMUATCI
PNVTEST
PNVRD
PNVWR
PSWTTST
PSWT
PSMTESTIP
PTESTDATAPATH
PTXPOWER
PSPIWRITE
PSPIREAD
PLLARCSEND
PLLARCNV
PANTDISABLE
PLLARCSTART
PLLARCEND
TURNMODE
PPHYSTATUS
PPHYSNR
PLLARCSTARTEX
PCPELTIMER
PCPESTIMER
PGCTCAL
CSG
AUTH
LTEINIT
SETIMSI
SETPLMNID
SETNPARAM
ATCMODE
SETKEY
SETOP
&C
&D
&E
&F
&S
&V
&W
E
I
L
M
Q
V
X
Z
T
P
\Q
\S
\V
%V
D
A
H
O
S0
S3
S4
S5
S6
S7
S8
S9
S10
S11
S30
S103
S104
+VZWMRUC
+VZWMRUE
+VZWAPNE
+CRSM
+CSCS
+CMEE
+CCLK
+CLCK
+COPS
+CPOL
+CGDCONT
+CPBS
+CPBW
+CPBR
+CNMI
+CMGF
+CMGC
+CSCA
+CSMP
+CPMS
+CMGL
+CMGR
+CMGW
+CMGS
+CMGD
+CMSS
+CNMA
+CMMS
+CPWD
+CNUM
+CIMI
+CPIN
+CACM
+CGSN
+CFUN
+CSIM
+FCLASS
+ICF
+IFC
+IPR
+GMI
+GMM
+GMR
+GCAP
+GSN
+DR
+DS
+CMEE
$QCCLR
$QCDMG
$QCDMR
$QCDNSP
$QCDNSS
$QCTER
$QCSLOT
$QCPWRDN
$BREW
$QCSYSMODE
$QCCTM
%ATCTEST
%HOYATEST
%EJTEST
%CHANGTEST
%TEMPTEST
%FRST
%SWV
%SIMCHECK
%GPS
%CMSTATE
%LCATT
%LCRSSI
%LCNWCHK
%LCNWINFO
%LCNWP
%LCPID
%LCPHPING
%LCLTESTATE
%LCLQOS
%LCCQOS
%LCDQOS
%LCTFT
%LCQOSAC
%LCQOSRL
%LCQOSMD
%LCEMULP
%LCVER
%LCPKTSTATS
%LCPINBLK
%LCPINUNBLK
%LCDMBR
%LCMOD
%LCMTU
%LCIMSON
%LCPINNUM
%LCCMDT
%LCFREQ
%LCRETCTR
%LCPTMR
%LCLTEBOOTM
%WIMSI
%LCLTEBOOTTIME
%GMTMR
%LCIMSSETCFG
%LCIMSGETCFG
%LCRST
%LCAPN
%LCRPT
%RSTSQN
%SetApp
%SETPIN
%TSTRFSH
%LCTCIV
%LCINTPDNCTL
%LCIIP
%GMTT
%LCINACT
%RESETEN
%LCACONMOD
%LCGMSSCFG
%SETLOG
%LCBIPENABLEFLAG
%LCROAMING
%LOCGET
%LOCON
%LOCOFF
+UART
+MDN
+MIN
+LGPASS
+LGUSERID
+LGPASSX
+PING
+PINGF
+PINGD
+PPPCAR
+MIPRMNAI
+PPPPW
+SKTENABLE
+PINGA
$LGTEST
$QCDMG
$LGDMGO
$LGSO
$LGFRC
$LGSCI
$LGSCM
$LGMTH
$LGMTS
$LGMTN
$LGOTAPA
$LGNLOCK
$LGMCCM
$LGMNCM
$LGS2M
$LGS1M
$LGMCCT
$LGMNCT
$LGS2T
$LGS1T
$LGMRUCL
$LGACCOLC
$LGBYCHAR
$LGMEID
$LGMDN
$LGMIN
$LGMODEP
$LGBANDP
$LGROAMP
$LGDTB
$LGPREV
$LGAKEY
$LGPWR
$LGACTV
$LGTC
$LGEPRL
$LGUIMID
$OTADM